【发布时间】: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