-1

我想重写网址

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 中的代码?

4

2 回答 2

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
于 2012-10-31T23:27:08.193 回答
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 教程

于 2012-10-31T18:09:09.190 回答