2013-08-17 4 views
0

У меня проблема с моим .htaccess. Это код:Проблемы с RewriteRule и .htaccess

RewriteEngine On 
Options -MultiViews 
Options +FollowSymlinks 

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

#Profile 
RewriteRule ^profile/([a-zA-Z0-9_-]+)-([0-9]+)/([a-zA-Z0-9_-]+)$ profile.php?one=$1&two=$2&three=$3 

Я хочу, чтобы удалить расширение .php, а также создать сео дружественный URL с /profile.php. Проблема возникает, когда я пытаюсь получить доступ к http://website.com/profile/1/2/3, Я получаю 500 ошибок. Но если я удалю код, который удаляет расширение php, то хорошо работает, но, конечно же, отображается расширение .php.

Итак ... что не так в этом коде? Я проверял снова и снова, и я действительно не нашел ошибок ... спасибо.

+0

Порядок правил важен, как остановить процесс перезаписи с '[L]', если вы не хотите, чтобы вмешиваться. – mario

ответ

1

Я думаю проблема не используется L флаг (маркировка Last rule).

Заменить код с этим:

RewriteEngine On 
Options +FollowSymlinks -MultiViews 

#Profile 
RewriteRule ^profile/([\w-]+)/([\w-]+)/([\w-]+)/?$ profile.php?one=$1&two=$2&three=$3 [L,QSA] 

#Remove .php extension 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.+?)/?$ $1.php [L] 
+0

+1 порядок может мешать здесь. И OP пытается использовать URL как '/ profile/1/2/3', но его правило, похоже, ожидает'/profile/\ d- \ d/\ d' (не совсем, но обратите внимание на '-'). –

+0

@RaviThapliyal: Спасибо и очень хорошая точка. OP обратите внимание на разницу в вашем регулярном выражении и URL. Я редактирую свой ответ, чтобы поддержать ваш примерный URL. – anubhava