我正在尝试设置一个.htaccess文件来转换传入的链接,如:
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表示文件的导航菜单路径
我已经能够在所有情况下都能使用它,除非在.php之后有参数(它执行mod重写,但丢失了参数)。最初,我希望让.htaccess解析url字符串,以便脚本可以使用,但此时我会对任何采用传入url并将其作为字符串转储到root上的解决方案感到满意。的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 :(得分:0)
使用如下所示的URU:/TopNav/SubNav/SEO-friendly-file-name-p#
您需要4个分组:
因此,您需要制作正则表达式,以便一次性捕获这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]
这将放在/root
目录