【问题标题】:using multiple parameter with url rewrite php使用带有url重写php的多个参数
【发布时间】:2018-02-21 07:11:26
【问题描述】:

您好,我正在尝试通过此代码使用 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

【问题讨论】:

    标签: php html mod-rewrite hyperlink uri


    【解决方案1】:

    这是正常行为。请记住,就网络浏览器(解析您的链接地址)而言,您的参数在 URL 中显示为目录。

    <a href="parameter1">one parameter</a>
    <a href="parameter1/parameter2">two parameter</a>
    

    第一个链接表示访问当前目录下的资源“parameter1”。 第二个链接表示访问parameter1子目录中的资源“parameter2”(相对于您的当前目录)。

    您可以将链接 url 更改为相对于根路径(当然要提到 project 目录),这将解决问题(这里的魔法全部包含在第一个 / 中):

    <a href="/project/parameter1">one parameter</a>
    <a href="/project/parameter1/parameter2">two parameter</a>
    

    【讨论】:

      猜你喜欢
      • 2018-06-07
      • 2017-02-03
      • 2012-11-22
      • 2016-07-29
      • 1970-01-01
      • 2021-10-29
      • 2012-10-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多