【问题标题】:Mod rewrite and dynamic URLsMod重写和动态URL
【发布时间】:2014-07-09 22:20:55
【问题描述】:

我知道这是一个常见问题,但我无法解决这个问题。

我有以下网址:

http://buildsanctuary.com/viewbuild.php?id=3&title=this_is_a_title&page=1

我希望的网址是:

http://buildsanctuary.com/viewbuild/3/this_is_a_title/1

通常对于 mod 重写,我会将用户发送到我想要的链接,并让 htaccess 完成所有工作。

所以在这种情况下,我尝试将用户链接到首选 URL 样式并重写 URL,但无济于事。

对我应该如何处理这个问题有任何帮助吗?我想将用户发送到首选 URL,但是我可以使用 htaccess 让我以与普通动态 URL 相同的方式处理页面和 URL $_GET 信息吗?

我已经尝试了 mod 重写生成器等,但没有任何效果。

这是氏族给我的:

RewriteRule ^([^/]*)/([^/]*)/([^/]*)\.php$ /viewbuild.php?id=$1&title=$2&page=$3 [L]

谢谢。

【问题讨论】:

  • 你能发布你现在拥有的吗?
  • 我认为你应该最终通过路径,例如3/this_is_a_title/1 到 PHP 并在那里进行映射。
  • 您缺少QSA 标志

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


【解决方案1】:

修复生成器规则:

RewriteRule ^viewbuild/([^/]*)/([^/]*)/([^/]*)\.php$ /viewbuild.php?id=$1&title=$2&page=$3 [L,QSA]

但是,我会这样做:

RewriteRule ^([^/]*)/(.*) /$1.php/$2 [L]

然后将您在$_SERVER['PATH_INFO'] 中获得的内容映射到您在 PHP 中的偏好。

【讨论】:

    【解决方案2】:

    将此代码放入您的DOCUMENT_ROOT/.htaccess 文件中:

    RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([\w-]+)/([^/]+)/([^/]+)/([^/]+)/?$ /$1.php?id=$2&title=$3&page=$4 [L,QSA]
    

    【讨论】:

      【解决方案3】:

      应该做的伎俩

      ^viewbuild/([0-9]+)/([a-z_]+)/-([0-9]+)/?$ viewbuild.php?id=$1&title=$2&page=$3 [ NC,L]

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-27
        • 1970-01-01
        • 1970-01-01
        • 2014-08-02
        相关资源
        最近更新 更多