我有这个链接:
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 到无穷大的时间">