在我的网站上,我有多个这样的网址:
主页:
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的各个部分识别为变量,但它也将子网站视为变量,并尝试为“内容”插入“子网站”。
有人能指出我正确的方向吗?
答案 0 :(得分:1)
您可以调整现有规则以允许可选的子网站/ 或子网站2 / 前缀,例如
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]
答案 1 :(得分:0)
我最终通过在.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
中,我有:(与root .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
重写规则,并从子文件夹加载页面。