mod_rewrite的多变量,子文件夹(mod_rewrite Multiple Variable

2019-10-17 09:47发布

在我的网站我有多个网址是这样的:

主页:

mysite.com
mysite.com/?content=about
mysite.com/?content=posts&page=2

子文件夹:

mysite.com/subsite/
mysite.com/subsite/?content=about
mysite.com/subsite2/?content=posts&page=2

我想提出清理这些了是:

mysite.com/about/
mysite.com/posts/2

mysite.com/subsite/about/
mysite.com/subsite/posts/2

现在,我已经能够使用mod_rewrite的一个变量,以及其他一些简单的事情,但我不完全知道如何做到这一点。 当我使用:

RewriteRule ^([a-z]+)/([a-z0-9-]+)/?$ /?content=$1&page=$2 [L]

它可以识别URL作为变量的部分,但它也看到了子网站作为一个变量,并尝试在“子网站”的“内容”堵塞。

会有人能够指出我在正确的方向?

Answer 1:

你可以调整你的现有规则,允许一个可选的子网站/subsite2 /前缀如

RewriteRule ^(subsite/|subsite2/)?([a-z]+)/([a-z0-9-]+)/$   /$1?content=$2&page=$3 [L]

或者只是现有的规则如前添加一个规则来处理子网站

RewriteRule ^(subsite/|subsite2/)([a-z]+)/([a-z0-9-]+)/$ /$1?content=$2&page=$3 [L]
RewriteRule ^([a-z]+)/([a-z0-9-]+)/?$ /?content=$1&page=$2 [L]


Answer 2:

我最终得到这个通过使他人工作.htaccess文件中的subsite的文件夹。

.htaccess有:

RewriteEngine On
RewriteRule ^([A-Za-z0-9]+)/?$ ?a=b&content=$1 [L]
RewriteRule ^([A-Za-z0-9]+)/([A-Za-z0-9]+)/?$ ?a=b&content=$1&page=$2 [L]


在亚位点.htaccess我有:(同根htaccess的)

RewriteEngine On
RewriteRule ^([A-Za-z0-9]+)/?$ ?a=b&content=$1 [L]
RewriteRule ^([A-Za-z0-9]+)/([A-Za-z0-9]+)/?$ ?a=b&content=$1&page=$2 [L]

如果你不需要改变子目录的网址,只添加RewriteEngine On子网站的.htaccess 。 这基本上覆盖了根.htaccess重写规则,并从子文件加载页面。



文章来源: mod_rewrite Multiple Variables and Subfolders