所有子文件夹的htaccess seo友好URL

时间:2013-02-20 15:30:41

标签: .htaccess

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

需要制作漂亮的url / seo友好网址:site.com/folder1 / something.html

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

此部分index.php?category=something在所有子文件夹中始终相同,我只想将其更改为更加友好,如something.html

再次:找到index.php?category=1$并将其替换为1$.html 不要碰任何其他东西,只是这部分网址

所以当我访问时:

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

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

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

我希望你明白吗?

我在根

中的htaccess中使用folder1尝试了此操作
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将无法正常工作

感谢任何帮助

1 个答案:

答案 0 :(得分: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]  

这应匹配任何子目录。