使用url重写php的多个参数

时间:2017-09-12 18:04:33

标签: php html mod-rewrite hyperlink uri

我正在尝试使用带有此代码的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

1 个答案:

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