2013-06-04 19 views
6

.htaccess'te SEO dostu maskeli yeniden yazmalar oluşturmaya çalışıyorum. Htaccess dosyası localhost'ta ve kişisel sunucumda gayet iyi çalışıyor, ancak maalesef GoDaddy'nin sunucularında çalışmıyor. Bunun zaten bir sorun olduğunun farkındayım, ama Godaddy'yi ana bilgisayar olarak kullanmaya başlayan bir müşteri için çalışıyor..htaccess sorgulama dizesini iç yönlendirmeye ekleme

Sorun, yeniden yazmanın, içeride tutmak yerine tarayıcı URL çubuğundaki yeniden yazılan sorgulama listesini gösteren bir yönlendirmeyi zorladığı görülüyor. örn.

Kural:

RewriteRule ^/?([a-zA-Z0-9-_/]*)$ /index.php?loadPage=$1&mode=cms [L,QSA] 

Bağlantı: /images Yönlendirme /images/?loadPage=images&mode=cms

için bu tarayıcı için /images/ olarak kalmak “gerektiğini” söyledi. Ben kopyaladığınız benim kısa aşağıda .htaccess, geliştirme bloğu

<Files .htaccess> 
    deny from all 
</Files> 

Options -MultiViews +FollowSymlinks -Indexes 

RewriteEngine On 
RewriteBase/

# Stop Old redirection from block below 
RewriteCond %{REQUEST_URI} "/old/" 
RewriteRule (.*) $1 [L] 

# Under construction Redirect 
RewriteCond %{REMOTE_ADDR} !^0.0.0.0 
RewriteCond %{REQUEST_URI} !^/?old/ 
RewriteRule ^/?(.*) “/old/$1″ [L,QSA] 

#Admin utilities rewrite 
RewriteRule ^/?admin/?(.*)$ /index.php?loadPage=$1&mode=backend [L,QSA] 

#CMS/Frontend rewrites -- this one is failing 
RewriteRule ^\/?([a-zA-Z0-9-_]+)\/?$ /index.php?loadPage=$1&mode=cms [QSA,L] 
için modifiye IP'leri

potansiyel Not bir ipucu görüntülenen url /images/?query_string DEĞİL index.php?query_string, bu nedenle dış istekler alıyoruz olsa, tam bir yönlendirme yapmıyor olmasıdır sayfa isteğinden 301 yanıt. Ben sadece o satır bakarak başka bir şey test etmedim

+0

bağlantıları izleyerek başvurun ya da contect takımı http://support.godaddy.com/groups/web-hosting/forum/topic/problem-using-htaccess-for-url-rewrite/ desteklemek için olabilir lütfen ve http://support.godaddy.com/groups/web-hosting/forum/topic/how-do-i-use-htaccess-to-redirect-my-document-root-and-mask-the-url/? sid = & sp = 1 –

+0

Linkler için teşekkür ederim, maalesef her ikisini de araştırdım ve durumum için de geçerli değil. –

cevap

2

...

RewriteRule ^\/?([a-zA-Z0-9-_]+)\/?$ /index.php?loadPage=$1&mode=cms [QSA,L] 

bir sözdizimi hatası var. 9'dan sonraki tire, bir aralık göstergesi olan teknik olarak kaçmalı. İnsanların çoğu zaman, ]'dan önce sonuna kadar yerleştirir ve bu yüzden bir hataya neden olmaz ve çoğu insan bundan kaçmak zorunda olmadıklarını düşünür. Ayrıca eğik çizgiden kaçmak zorunda değilsiniz. Ayrıca soru işaretini kullanarak önceki isteğe bağlı yapar ve neden bunu istediğinizi bilmiyorum. Yani şöyle olmalıdır:

RewriteRule ^([a-zA-Z0-9\-_]+)/?$ /index\.php?loadPage=$1&mode=cms [QSA,L] 
+0

İsteğe bağlı kapanma eğik çizgisi, bazı "fantastik" tarayıcı eklentilerinin, eğik çizgiden sonra (güvenlik ile ilgili bir şey) mevcut olmaması durumunda, izleyen eğik çizginin bağlantılardan kaldırılmasıdır. Tuhaf olsa da, yeniden izleyen eğik çizgiye eriştiğimde yeniden yazım düzgün çalışır, ancak mevcut değilse çalışmayacaktır. Orijinal yönetici yeniden yazmak aynı şeyi (sadece daha az seçici) yapar ve mükemmel çalışır, bu yüzden maç değerlerinin nasıl yorumlandığıyla ilgili bir şey düşünürsünüz.Bununla biraz daha oynayacağım. (ne yazık ki önerilen değişiklikler sorunu değiştirmedi). –

+0

Eklemek için izleyen bir eğriye sahip olmayan gelen bağlantılar için bir 301 yönlendirmesi ekledim ve kuralların istediğim şekilde çalışmasını sağladım. Tek bir kuralda isteğe bağlı olmasını isterdim, ama en azından lol çalışır. Beni doğru yola koyduğun için teşekkürler! –

0

Diğer bazı kuralları açıkladım, böylece neler olduğunu anlatabilirsin. "Eski" ile başlamıyor ve eski dizine yeniden yazıyorsunuz. Önceki kural, '/ old /' kelimesini bulduğunuz herşeyi alıyormuşsunuz gibi görünüyor ve siz kendinize yönlendiriyordunuz. 0.0.0.0'dan hiçbir istek almamalısınız.

Son kuralınızdaki kısa çizginin parantezin sonuna gitmesi gerekir, bu nedenle Apache aralığını aramaz.

.htaccess ile çalıştığımız için, REQUEST_URI kullanmıyorsak önceki eğik çizgilere ihtiyacımız yoktur.

RewriteEngine On 
RewriteBase/

# Stop Old redirection from block below 
RewriteCond %{REQUEST_URI} ^/old/(.*)$ 
RewriteRule .* %1 [L] 

# Under construction Redirect 
# RewriteCond %{REMOTE_ADDR} !^0.0.0.0 
# RewriteCond %{REQUEST_URI} !^/?old/ 
# RewriteRule ^/?(.*) /old/$1 [L,QSA] 

#Admin utilities rewrite 
RewriteRule ^admin/(.*)$ index.php?loadPage=$1&mode=backend [L,QSA] 

#CMS/Frontend rewrites 
RewriteCond %{REQUEST_FILENAME} !^index.php$ 
RewriteRule ^([A_Za-z0-9_-]+)/?$ index.php?loadPage=$1&mode=cms [QSA,L] 
+0

0.0.0.0 IP, sunucunun geliştirilmek üzere IP'ye erişmesi için bir yer tutucudur. Alt tire ile biraz tembelleştiğime katılıyorum, ancak Apache normalde aşağıdaki aralık karakterleri olmadığı için bunu çözebilir. Bu değişiklikleri test ettim ve maalesef sorun devam ediyor. Ayrıca RewriteEngine ve frontend rewrite dışındaki her kuralı ve yine de aynı sonucu açıkladım, bu yüzden bir kural çatışması gibi görünmüyor. –