url在php localhost中重写.htaccess无法正常工作

时间:2012-10-31 17:53:21

标签: php .htaccess url-rewriting apache2

我想重写网址 从

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中?

2 个答案:

答案 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