0

我正在尝试设置一个 .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/ 的解决方案感到满意索引.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],这似乎奏效了。谢谢,谁建议...

4

1 回答 1

0

使用如下所示的 URU:/TopNav/SubNav/SEO-friendly-file-name-p#您需要 4 个分组:

  1. 顶部导航
  2. 子导航
  3. SEO 友好的文件名
  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目录中的 htaccess 文件

于 2013-03-05T03:03:05.040 回答