我想重写网址 从
http://localhost/Ent/Movie/Info.php?year=2011&movie=any_movie
到
http://localhost/Ent/Movie/Info/2011/any_movie
我在.htaccess中尝试了很多代码,比如
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteBase /Ent/Movie/
RewriteRule ^Info/([0-9]+)/([a-zA-Z0-9]+)$ Info.php?year=$1&movie=$2 [L]
请注意,我的.htaccess文件位于网站的根目录中。
我的.htaccess位置错误或代码在.htaccess中?
答案 0 :(得分:1)
要将浏览器外部重定向到看起来更漂亮的URL(不带查询字符串):
RewriteCond %{THE_REQUEST} ^(GET|HEAD|POST)\ /Ent/Movie/Info\.php\?year=([^&]+)&movie=([^&\ ]+)([^\ ]*)
RewriteRule ^ /Ent/Movie/Info/%2/%3?%4 [L,R=301]
然后在内部重写它
RewriteRule ^/?Ent/Movie/Info/([0-9]+)/(.*)$ /Ent/Movie/Info.php?year=$1&movie=$2 [L,QSA]
这些规则存放在文档根目录中,它们位于以下位置:
Options +FollowSymLinks
RewriteEngine on
答案 1 :(得分:0)
RewriteRule ^Info/([0-9]+)/([a-zA-Z0-9]+)$ Info.php?year=$1&movie=$2
会在相反的方向上匹配重写,因此您需要将逻辑反转为:
RewriteRule ^Info.php?year=([0-9]+)&movie=([a-zA-Z0-9]+)$ Info/$1/$2
首先是你想要匹配的东西,第二个参数是你想要产生的模式。 请参阅mod_rewrite tutorial。