temiz URL'ler için mod_rewrite 500 iç sunucu hatası veriyor

3 Cevap php

Ben mod_rewrite ile bazı sıkıntılar yaşıyorum.

On my index page (index.php) I show a blog and a single blog post page looks like this: http://www.mydomain.com/blog/post-title

Bunun için mod_rewrite olduğu:

RewriteRule ^blog/([A-Za-z0-9-]+)$ index.php?postslug=$1 [L]

Bu bir cazibe gibi çalışır.

But I also have another page called artists.php and the url should look like this: http://www.mydomain.com/artists/artist-name

Bunun için mod_rewrite olduğu:

RewriteRule ^artists/([A-Za-z0-9-]+)$ artists.php?artistslug=$1 [L]

Bu bana bir 500 iç sunucu hatası veriyor ve ben bu durumda neden hiçbir ipucu var ...

Index.php ve artists.php hem benim web sitesinin kök vardır

. Htaccess dosyası:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

RewriteRule ^blog/([a-z0-9\-]+)$ index.php?postslug=$1 [L]
RewriteRule ^artists/([a-z0-9\-]+)$ artists.php?artistslug=$1 [L]

3 Cevap

Yerine ile birinin bu kuralı deneyin iki RewriteCond:

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.php -f
RewriteRule ^(.*)$ $1.php [L]

Ben bunu kendim test ve %{REQUEST_FILENAME} yanlış değerini içeren görünüyor ama -f true zaten değerlendirilir ettik.

Açın:

RewriteLog /path/to/file.log
RewriteLogLevel 4

RewriteRule kendisi URL yeniden yer almadan, doğrudan artists.php dosyasına erişmek eğer sunucu hata oluşursa kontrol, bana güzel görünüyor.