htaccess的mod_rewrite的重写规则

问题描述:

我试图建立一个.htaccess文件到一个输入链接转换,如:htaccess的mod_rewrite的重写规则

http://domain.com/root/TopNav/SubNav/SEO-friendly-file-name-p#

到这一点:

http://domain.com/root/index.php?t=TopNav&s=SubNav&l=SEO-friendly-file-name&p=#

其中p#是页id和TopNav/SubNav代表文件的导航菜单路径

我已经能够使它在所有ca除了在.php之后有参数时(除了mod重写,但失去了参数)。最初,我希望让.htaccess解析url字符串,以便脚本可以使用,但是在这一点上,我会很满意任何解决方案,它将传入的url并将其转储为根/ index.php文件。

这里就是我目前有在.htaccess:

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteRule ^(.*)/(.*)\.php  index.php?s=$1&p=$2 [L] 
RewriteRule ^(.*)/   index.php?p=$1&s=$1 [L] 
</IfModule> 
ErrorDocument 404 /404.php 

什么我可能是做错了什么想法?更好的方法来完成这个建议?

感谢

**有人建议更改[L]到[L,QSA]这似乎已经奏效。谢谢你,谁建议,...

+0

欢迎您。 – 2013-03-05 04:38:40

随着URU,看起来像这样:/TopNav/SubNav/SEO-friendly-file-name-p#你有4个分组,您需要:

  1. TopNav
  2. SubNav
  3. 搜索引擎友好的,文件 - 命名

所以,你需要你的手艺正则表达式,以便它在一个去捕捉这4两件事。

尝试:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/([^/]+)/(.+?)-p([0-9]+)$ index.php?t=$1&s=$2&l=$3&p=$4 [L,QSA] 

这将走在htaccess文件在你的/root目录