1

我在所有文件夹的 index.php 中有脚本

需要像这样制作漂亮的 url/seo 友好的 url:site.com/folder1/something.html

现在我有这样丑陋的网址:site.com/folder1/index.php?category=something

这部分index.php?category=something在所有子文件夹中总是相同的,我只是想把它改成对 seo 更友好something.html

再一次:找到index.php?category=1$并替换它,1$.html 不要触摸其他任何东西,只是这部分 url

所以当我访问时:

site.com/another-subfolder/and-one-more-folder-here/index.php?category=something

需要在地址栏中看到这个:

site.com/another-subfolder/and-one-more-folder-here/something.html

我希望你明白吗?

folder1我在root的htaccess中试过这个

RewriteRule ^folder1/(.*).html$ folder1/index.php?category=$1 [L,R=301]

好的,这可行,但是我怎样才能使它适用于整个站点的所有子文件夹,如下所示:

site.com/folder145/index.php?category=something
site.com/subfolder/index.php?category=something
site.com/another-subfolder/and-one-more-folder-here/index.php?category=something

将有 1000 个具有不同名称的子文件夹,因此手动为每个子文件夹创建 RewriteRule 将不起作用

任何帮助表示赞赏

4

1 回答 1

0

首先,您需要将生成的所有链接从index.php?category=表单更改为category.html表单。

然后在文档根目录的 htaccess 文件中,添加这些规则以在内部将category.html表单重写回index.php?category=表单:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?/)?([^/]+)\.html$ /$1index.php?category=$2 [L]

然后,指向您无法控制的链接(或使用 FORM 生成的链接)从外部重定向对index.php?category=表单中链接的任何直接访问:

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ (/.*?)?/index\.php\?category=([^&\ ]+)
RewriteRule ^(.+?/)?index\.php$ /$1%3.html? [L,R=301]  

这应该匹配任何和每个子目录。

于 2013-02-20T18:28:04.723 回答