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]这似乎已经奏效。谢谢你,谁建议,...
答
随着URU,看起来像这样:/TopNav/SubNav/SEO-friendly-file-name-p#
你有4个分组,您需要:
- TopNav
- SubNav
- 搜索引擎友好的,文件 - 命名
- #
所以,你需要你的手艺正则表达式,以便它在一个去捕捉这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
目录
欢迎您。 – 2013-03-05 04:38:40