HTACCESS Переписать, удалить .php и перенаправить работу для одного правила, а не для другого - PullRequest
0 голосов
/ 25 августа 2018

У меня есть следующие примеры URL, есть много возможных значений параметров

http://www.example.com/area-codes.php?code=0000
http://www.example.com/search.php?number=00000000000

Который я хочу переписать к следующему, соответственно.

http://www.example.com/area-codes/0000
http://www.example.com/number/00000000000

В настоящее время второй URL отлично переписывается и перенаправляется. Однако верхняя вызывает внутреннюю ошибку сервера

Вот мой htaccess

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_URI} \.(jpg|css|js|gif|png)$ [NC]
RewriteRule ^ - [L]

#unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [R=301,L]

#resolve .php file for extensionless php urls
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]

#redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*[^.#?\ ]+\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(([^/]+/)*[^.]+)\.php /$1 [R=301,L]    

RewriteRule ^area-codes/([^/]*)$ /area-codes.php?code=$1 [L,QSA]
RewriteRule ^number/([^/]*)$ /search.php?number=$1 [L,QSA]

Я предполагаю, что с моим флагом что-то не так?

1 Ответ

0 голосов
/ 26 августа 2018

Закомментировали эти две строки, и это сработало.

#resolve .php file for extensionless php urls
#RewriteCond %{REQUEST_FILENAME} !-d
#RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]
...