1

在我的网站上,我有多个这样的 URL:

主页:

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 的部分识别为变量,但它也将子站点视为变量,并尝试为“内容”插入“子站点”。

有人能指出我正确的方向吗?

4

2 回答 2

1

您可以调整现有规则以允许使用可选的subsite /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]
于 2012-11-18T10:25:57.537 回答
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]

如果您不需要更改子目录的 url,只需添加RewriteEngine On到子站点的.htaccess. 这基本上覆盖了根.htaccess重写规则,并从子文件夹加载页面。

于 2012-11-24T07:44:19.307 回答