【问题标题】:How can I rewrite a URL, splitting the path into separate querystring arguments?如何重写 URL,将路径拆分为单独的查询字符串参数?
【发布时间】:2012-06-07 02:15:49
【问题描述】:

我想将诸如 mysite.com/Section/Subsection/SubSubSection 的 URL 重写为 mysite.com/index.php?s=Section&sub1=SubSection&sub2=SubSubSection

我写了这条规则:

RewriteRule ^([^/]*)/([^/]*)/([^/]*)/?$ /index.php?s=$1&sub1=$2&sub2=$3

但问题是 Section、SubSection 和 SubSubSection 根本不是强制性的,但如果我插入一些“?”字符发生内部服务器错误...

(我试过这个:

RewriteRule ^([^/]*)(/([^/]*))?(/([^/]*))?/?$ /index.php?s=$1&sub1=$3&sub2=$5

但它不起作用)

另外一个问题是还有其他的网址不应该编辑,比如/res/img/logo.png。

有问题的网站是动态的,所以我事先不知道部分名称。当然,我知道应该排除的 URL。

有什么解决办法吗?提前致谢。

【问题讨论】:

  • 难道不能只在php中处理request_uri吗?似乎它会更容易,我认为 CMS 就像 Wordpress、Drupal 和 Joomla。而且我认为 Zend 处理 php 中的 url 一旦一切都被重定向 index.php
  • 但是如果我重定向到 index.php,当我尝试在 php 中处理它时,request_uri 总是'index.php',或者不是?
  • 就是这样,request_uri 不会更改为 index.php,只要您不在重写规则中进行重定向。以 Wordpress .htaccess 文件为例。
  • 我看到了,好像有效!谢谢!

标签: mod-rewrite apache2


【解决方案1】:

我认为你应该这样做......

RewriteRule ^/([a-zA-Z]*)/([a-zA-Z]*)/([a-zA-Z]*)/?$ /index.php?s=$1&sub1=$2&sub2=$3

问候,

咪咪

【讨论】:

    猜你喜欢
    • 2016-11-17
    • 2014-09-04
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    相关资源
    最近更新 更多