目前我有一个网址
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>
我尝试了一些我在这个网站上找到的答案,但我仍然无法弄清楚我做错了什么。任何人?
谢谢!
答案 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>
希望这将有助于将来。