[英].htaccess RewriteRule not working apache
我有這個鏈接:
http://www.example.com/NEW/movie.php?name=Parker&id=1904996
我希望它顯示如下:
http://www.example.com/NEW/Parker/1904996.htm
這是我的.htaccess代碼:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)\.html$ /NEW/movie.php?name=$1&id=$2 [L]
有幫助嗎?
您的代碼中似乎反向使用此規則。
在DOCUMENT_ROOT/NEW/.htaccess
文件中嘗試以下規則:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /NEW/
# fix css/js/media links
RewriteRule ^.+?/((?:css|js|media)/.+)$ /$1 [R=302,NC,L,NE]
# remove spaces
RewriteRule "^([^ ]*) +(.*)$" $1$2 [L,R]
# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} /movie\.php\?name=([^&]*)&id=([^\s&]+) [NC]
RewriteRule ^ %1/%2.htm? [R=302,L,NE]
# internal forward from pretty URL to actual one
RewriteRule ^([^/]+)/([^.]+)\.html?$ movie.php?name=$1&id=$2 [L,NC,QSA,NE]
.html
意思是“任何字符后面跟着文字字符串html
。但是你希望它是.htm
。你可以通過在它前面放一個反斜杠來逃避這段時間。
.
=任何角色 \\.
=文字.
字符 也許用
RewriteRule ^([^/]+)/(.+)\.html?$ /NEW/movie.php?name=$1&id=$2 [L]
哪個會轉發.html
和.htm
(因為l
應該是“重復0或1次”)。
變化:
[^/]+
而不是[^/]
。 加號表示“重復1次或更多次”。 如果你沒有這個,那么你只允許一個不是斜線的字符。 (.+)
代替[^/]
。 由於我們不希望它保持匹配,直到我們達到斜線(因為我們不會達到斜線),我們使用貪婪的術語.+
意思是“匹配盡可能多的字符,直到你到達下一部分(正如\\.html?$
)。我們也可以使用[^\\.]
但這意味着我們不能在我們的ID中使用任何句點。 或者,如果ID只能是一個數字:
RewriteRule ^([^/]+)/([1-9][0-9]*)\.html?$ /NEW/movie.php?name=$1&id=$2 [L]
[1-9][0-9]*
表示“1到9之間的任何數字,后跟0-9重復0到無窮大時間之間的任何數字”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.