【问题标题】:HTACCESS URL Variable RewriteHTACCESS URL 变量重写
【发布时间】:2015-02-26 14:38:22
【问题描述】:

希望重写 URL,但似乎无法正常工作。

示例网址:

http://www.example.com/find/agency.php?agency=33524&name=happy-example

理想的、重写的 URL:

http://www.example.com/find/agency/happy-example

众多尝试重写之一:

RewriteRule ^/([.]+)/([.]+)$ agency.php?agency=$1&name=$2

RewriteRule ^/([.]+)/([.]+)/$ agency.php?agency=$1&name=$2

即使无法删除“agency=”变量,我似乎仍然无法让这个 URL 写出变量 - 我是否正在向后重写?

【问题讨论】:

    标签: php apache .htaccess mod-rewrite url-rewriting


    【解决方案1】:

    在进行重写之前尝试使用重写条件来捕获查询字符串。

    例如:

    RewriteCond %{QUERY_STRING} ^agency=33524&name=([^&]+)
    RewriteRule ^find/agency.php$ find/agency/%1? [R=301]
    

    【讨论】:

      【解决方案2】:

      您的规则有几处错误。但是要获得这样的网址。

      http://www.example.com/find/33524/happy-example
      

      您需要使用如下所示的重写。

      RewriteEngine On
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^find/([^/]+)/([^/]+)/?$ /agency.php?agency=$1&name=$2 [L]
      

      【讨论】:

        【解决方案3】:

        使用惰性修饰符进行符号匹配(目前([.]+) 将匹配所有内容)

        RewriteRule ^/([.]+?)/([.]+?)$ agency.php?agency=$1&name=$2
        RewriteRule ^/([.]+?)/([.]+?)/$ agency.php?agency=$1&name=$2
        

        您也可以将这些组合成一个规则

        RewriteRule ^/([.]+?)/([.]+?)[/]{0,1}$ agency.php?agency=$1&name=$2
        

        这不包括根据您的具体情况需要的任何标志

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-06-02
          • 2019-03-07
          • 2017-10-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-11
          • 1970-01-01
          相关资源
          最近更新 更多