У меня есть htaccess файл, выполняющий переписывание URL. Он в основном удаляет расширение .php.htaccess переписать, как отменить файлы подкаталогов
Правила работают нормально, например. они успешно переписывают http://example.com/contact.php
в http://example.com/contact
Однако переписывание также изменяет файлы подкаталогов, такие как /includes/check-form-input.php
.
Итак, когда, например, форма на contact.php
пытается отправить на /includes/check-form-input.php
htaccess переписывает .php с конца, и я получаю 404 заголовка.
i.e. /includes/check-form-input
не найден.
По крайней мере, кажется, что происходит, используя HTTP_REFERER
, кажется, подтверждает это как реферер был /includes/check-form-input
без внутр .php
Есть ли способ, чтобы добавить правило свести на нет все вложенные каталоги?
У меня есть следующий htaccess, который копируется из другого ответа здесь, на SO, так как я не 100% не понимаю структуру перезаписи.
(я оставил в WWW к не-WWW перенаправить в случае, если это причина)
## Rewrite on
RewriteEngine on
## Redirect all pages from non-www to www
Options +FollowSymLinks
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
## URL rewrite
# Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ http://example.com/$1 [R=301,L]
# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://example.com/$1 [R=301,L]
# Resolve .php file for extensionless php urls
RewriteRule ^([^/.]+)$ $1.php [L]