我正在尝试使用带有此代码的php重写url
.htaccess文件
<IfModule mod_rewrite.c>
RewriteEngine On
#prevent access to (includes) folder
RewriteCond %{REQUEST_URI} !-f
RewriteRule ^([includes])$ /new [L]
#if use tow parameter
RewriteCond %{REQUEST_URI} ([a-z0-9]+)/([a-z0-9]+)
RewriteRule ^([a-z0-9]+)/([a-z0-9]+)/?$ index.php?p1=$1&p2=$2 [L]
#if use one parameter
RewriteCond %{REQUEST_URI} ([a-z0-9]+)
RewriteRule ^([a-z0-9]+)$ index.php?p1=$1 [L]
</IfModule>
我有一个index.php文件,内容是两个链接 第一个发送一个参数 第二发送牵引参数
<a href="parameter1">one parameter</a>
<a href="parameter1/parameter2">two parameter</a>
当我使用第一个链接时,每个东西都没问题,链接在浏览器中显示为
http://localhost/project/parameter1
当我第一次使用第二个链接时,每个东西看起来都很好
http://localhost/project/parameter1/parameter2
但如果我再次压制链接,则链接将在浏览器中显示为
http://localhost/project/parameter1/parameter1/parameter2
答案 0 :(得分:1)
这是正常行为。请记住,就网络浏览器(解析您的链接地址)而言,您的参数会在URL中显示为目录。
<a href="parameter1">one parameter</a>
<a href="parameter1/parameter2">two parameter</a>
第一个链接表示访问资源&#34;参数1&#34;在当前目录中。 第二个链接表示访问资源&#34;参数2&#34;在parameter1子目录中(相对于当前目录)。
您可以将链接网址更改为相对于根路径(当然提及project
目录),这将解决问题(魔法全部包含在此处/
) :
<a href="/project/parameter1">one parameter</a>
<a href="/project/parameter1/parameter2">two parameter</a>