清理网址mod_rewrite无法正常工作

时间:2013-12-05 02:47:38

标签: php .htaccess mod-rewrite

目前我有一个网址

www.mysite.com/folder/details.php?d=sample.com

我希望它像这样改变

www.mysite.com/folder/sample.com

这是我的.htaccess文件,但它无效:

RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ details.php?d=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ details.php?d=$1

我也试过这个,但它也不起作用:

RewriteEngine On
RewriteRule folder/([0-9]+) details.php?d=$1

这是我的网址链接PHP代码:

<a href="details.php?d=<?php echo $var['var']; ?>"><?php echo $var['var']; ?></a>

我尝试了一些我在这个网站上找到的答案,但我仍然无法弄清楚我做错了什么。任何人?

谢谢!

2 个答案:

答案 0 :(得分:0)

您需要一些条件来阻止循环:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_.-]+)/?$ details.php?d=$1 [L]

您还可以使用末尾的/?将两个规则合并为一个,以使斜杠可选。


对于要放置在文档根目录中的规则,您需要将文件夹名称添加到模式和目标中:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^folder/([a-zA-Z0-9_.-]+)/?$ /folder/details.php?d=$1 [L]

答案 1 :(得分:0)

感谢@Jon Lin和@quasivivo的评论,我找到了解决问题的方法,这是我的htaccess:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^portfolio/(.*)$ /portfolio/details.php?d=$1 [L,QSA,NC]

我也更改了我的网址链接代码:

<a href="<?php echo $var['var']; ?>"><?php echo $var['var']; ?></a>

希望这将有助于将来。