URL开发和mod_rewrite

时间:2012-11-20 04:46:52

标签: php url mod-rewrite

我的网站由主页面和多个子目录构成,所有这些都在同一个域下。

我的网址目前是................. |理想的干净版本:


  • mysite.com
    • mysite.com/?content=content1 ...................... | mysite.com/content1/
    • mysite.com/?content=content2&page=4 ........ | mysite.com/content2/4/
    • mysite.com/?content=content3 ...................... | mysite.com/content3/
    • mysite.com/?content=content4 ...................... | mysite.com/content4/
    • mysite.com/?content=article&id=34 ............ | mysite.com/article/34/

然后子目录基本相同:

  • mysite.com/subdir mysite.com/subdir2 mysite.com/subdir3
    • mysite.com/subdir/?content=content1 ................... | mysite.com/subdir/content1/
    • mysite.com/subdir/?content=content2&page=4 ..... | mysite.com/subdir/content2/4/
    • mysite.com/subdir/?content=content3 ................... | mysite.com/subdir/content3/
    • mysite.com/subdir/?content=content4 ................... | mysite.com/subdir/content4/
    • mysite.com/subdir/?content=article&id=34 ......... | mysite.com/subdir/article/34/

我简单地使用了mod_rewrite,但我不确定如何处理这些多变量。另外,我如何区分实际的子文件夹和内容变量。这样可以防止'subdir'或'subdir2'作为根站点的内容变量插入。

我玩了很多代码片段,但是我已经把我的.htaccess slate 擦干净了,然后接近你所有人试图帮助我重新填充它。您的意见将完全受到赞赏。


注意: 页面查询字符串唯一需要的时间是'content'=='content2'

?content=content2&page=4

**文章/ ID关系共享相同的规则,所有其他“内容”值都应该是动态的。

2 个答案:

答案 0 :(得分:0)

你可以在main和子目录中复制类似的内容:

RewriteRule  ^(content\d+)(?:/(\d+))?/?$  ?content=$1&page=$2

如果你不想要一个空的& page = param,你可以将它分成两个不同的RewriteRules。

RewriteRule  ^(content\d+)/?$             ?content=$1
RewriteRule  ^(content\d+)/(\d+)/?$       ?content=$1&page=$2

article的方法相同。

答案 1 :(得分:0)

会为你效劳。

RewriteEngine On
RewriteBase /

RewriteRule ^([^/]*)/$ /?content=$1 [L,QSL] 
RewriteRule ^([^/]*)/([^/]*)/$ /?content=$1&page=$2 [L,QSL] 
RewriteRule ^([^/]*)/id/([^/]*)/$ /?content=$1&id=$2 [L,QSL]