【问题标题】:Rewrite to "pretty URL"? [closed]重写为“漂亮的 URL”? [关闭]
【发布时间】:2012-08-27 03:00:06
【问题描述】:

这是我正在努力实现的一个示例。

原网址:
http://subdomain.domain.com/company.php?test=TES001

改写后的网址:
http://subdomain.domain.com/company/AAA001

Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteRule company/(.*)/(.*)/$ /company.php?$1=$2
ErrorDocument 404 /

【问题讨论】:

    标签: php apache .htaccess mod-rewrite


    【解决方案1】:

    如果您希望 /company.php?test=AAA001 重定向到 /company/AAA001,请执行以下操作:

    RewriteCond %{QUERY_STRING} test=([A-Z]+[0-9]+)  
    RewriteRule ^company.php /company/%1? [R]    
    

    如果您想将/company/AAA001 重写为/company.php?test=AAA001,请执行以下操作:

    RewriteRule company/([A-Z]+[0-9]+)$ /company.php?test=$1
    

    【讨论】:

    • 谢谢,完美运行
    【解决方案2】:

    我认为你的 RewriteRule 写错了,有点倒退,应该是

    RewriteRule company.php?test=([A-Z]+)([0-9]+) /company/AAA$2
    

    即您首先给出要匹配的模式,然后将其重写为...但是我不确定您是否可以真正匹配这样的 GET 参数...

    【讨论】:

    • 对。你不能匹配这样的查询字符串参数。 RewriteRule 只看路径(最多,但不包括问号)。要匹配查询字符串,您可以使用RewriteCond %{QUERY_STRING}。看我的回答。
    【解决方案3】:

    我不是 mod_rewrite 专家,但是:

    RewriteRule company/(.*)/(.*)/$ /company.php?$1=$2
    

    不应匹配以下表达式:

    /company/foo/bar/
    

    并将它们映射到:

    /company.php?foo=bar
    

    您的网址中只有:

    /company/foo
    

    Apache 日志在说什么? 你的 .htaccess 真的读了吗? 您是否重新加载了 Apache 配置? (不记得是否需要)

    【讨论】:

      【解决方案4】:

      你有错误的顺序......在“RewriteRule”之后立即是你想要的 URL 的形式(即你的干净的 url),使用正则表达式来表示该 url 中可能发生的任何变化。之后,您将获得 URL 的路径,以及找到的值的正则表达式标记(即 $1、$2 等)

      RewriteEngine On
      RewriteCond %{HTTP_HOST} ^domain.com
      RewriteRule (.*) http://www.domain.com/$1 [R=301,L]
      
      ErrorDocument 400 http://www.domain.com/400
      ErrorDocument 403 http://www.domain.com/403
      ErrorDocument 404 http://www.domain.com/404
      ErrorDocument 500 http://www.domain.com/500
      
      RewriteEngine on
      RewriteBase /
      #PAGES
      
      RewriteRule ^/company/([A-Z]+)([0-9]+)/$ company.php?test=$1&%{QUERY_STRING} [NC,L]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-08
        • 2016-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多