[英]Slash after file extension can not be redirected
我正在使用這些htaccess代碼刪除php擴展名並將其重定向到沒有文件擴展名的地方。
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.+?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,L,NE]
然后我嘗試使用另一個稍微不同的代碼
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]+\s.+\.php\sHTTP/.+
RewriteRule ^(.+)\.[a-zA-Z0-9]+$ $1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
如果嘗試訪問,兩個代碼都會產生相同的問題
現在,如果嘗試訪問,這是一種奇怪的行為
domain.com/other/content.php/轉到domain.com/other/content.php/(200響應而不是404)
domain.com/other/content.php/any-word轉到domain.com/other/content.php/any-word(200響應而不是404錯誤)
除此問題外,所有其他重定向都可以正常工作。 任何人都可以同時使用這兩個代碼嗎,我需要兩個代碼都更正,因為我有兩個使用htaccess規則的不同站點。
如果我保留兩個代碼
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.+?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,L,NE]
另外,我添加了新代碼然后就可以了
RewriteEngine On
RewriteCond %{THE_REQUEST} /([^.]+)\.php/? [NC]
RewriteRule ^ /%1/ [NC,R,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ /$1.php [L,NC]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.