它實際上有效,因為我只有 .html 檔案。但是,現在我需要通過表單擴展 .php。
我試圖復制 .htaccess 規則,但 htaccess 只采用第一條規則。
我的嘗試:
RewriteEngine on
RewriteRule ^([^.?] )$ %{REQUEST_URI}.html [L]
RewriteCond %{THE_REQUEST} "^[^ ]* .*?\.html[? ].*$"
RewriteRule ^([^.?] )$ %{REQUEST_URI}.php [L]
RewriteCond %{THE_REQUEST} "^[^ ]* .*?\.php[? ].*$"
RewriteRule .* - [L,R=404]
有沒有辦法在同一規則中隱藏 .php 和 .html 結尾,它有效?
uj5u.com熱心網友回復:
嘗試添加:
Options MultiViews
而不是使用mod_rewrite.
或者,你可以試試這個:
RewriteEngine On
# return 404 if .html or .php is found at the end
RewriteRule \.(?:php|html)$ - [R=404,L]
# internally rewrite to .php if that exists
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ((?:^|\/)[^\.] )$ $1.php [END]
# internally rewrite to .html if that exists
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ((?:^|\/)[^\.] )$ $1.html [END]
請記住,[END]在該規則之后停止處理所有 mod_rewrite 規則,因此停止將重寫的 url 重寫為 404 的遞回。
或者您可以嘗試:
RewriteEngine On
RewriteCond %{THE_REQUEST} .*\.(?:php|html)[\s\?]{1}
RewriteRule ^ - [R=404,L]
# internally rewrite to .php if that exists
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ((?:^|\/)[^\.] )$ $1.php [L]
# internally rewrite to .html if that exists
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ((?:^|\/)[^\.] )$ $1.html [L]
第二個不會停止處理所有重寫規則。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/425159.html
上一篇:變數URL的永久重定向
