我有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頭文件。
即找不到/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]