我在所有文件夹中的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将无法正常工作
感谢任何帮助
答案 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]
这应匹配任何子目录。