.htaccess RewriteRule用于自定义CMS中的类别/页面

时间:2017-06-14 06:39:15

标签: php regex apache .htaccess mod-rewrite

我有一个工作的RewriteRule,可以将任何页面重写为文字网址:

RewriteRule ^(.+)$ index.php?page=$1 [QSA,L]

问题是我要添加page = $ 1& category = $ 2并将其转换为...明显... / category / page

我尝试了这个,但它似乎不起作用:

RewriteRule ^([^/]+)/([^/]+)$ index.php?page=$1&category=$2 [QSA,L]

我应该注意到我仍然希望能够访问没有类别的页面 - 例如/ login或/ about应该转到index.php?page = about例如

5 个答案:

答案 0 :(得分:2)

您的解决方案如下。

RewriteRule ^([0-9a-zA-Z_\-]+)/([0-9a-zA-Z_\-]+)$ index.php?page=$1&category=$2 [NC,L]
  

输入网址:http://www.test.com/my-cat/my-page

     

,它将被视为:http://www.test.com/index.php?page=my-cat&category=my-page

答案 1 :(得分:1)

试试这个

    #https://www.example.com/index.php?category=9&page=CBSE `#https://www.example.com/category/page/CBSE`


Method One:

    #use this code for generate new url 

RewriteRule ^index/([0-9a-zA-Z]+)/([0-9a-zA-Z]+)$ index.php?category=$1&page=$2 [NC,L]

    Method Two :

    RewriteRule ^index/([0-9a-zA-Z]+)/([0-9a-zA-Z]+)$ index.php?category=$1&page=$2


    Note :Hit Your Url index.php?category=$1&page=$2 to convert $i & $2 Create Dynamic Url Your Id Bases

答案 2 :(得分:1)

尝试使用下面的内容,我们指示apache不要查找目录或文件。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)$ index.php?page=$1&category=$2 [QSA,L]

答案 3 :(得分:1)

这对你有用。

RewriteEngine On

RewriteRule ^([^/]*)/([^/]*)$ /index.php?category=$1&page=$2 [L]

如果你想轻松生成重写网址,有很多在线重写网址生成器。

答案 4 :(得分:0)

感谢所有的贡献......

因为我需要同时满足/ page和/category/page ...我最终这样做了:

RewriteRule ^([0-9a-zA-Z_\-][^/]+)$ index.php?page=$1 [N]
RewriteRule ^([0-9a-zA-Z_\-]+)/([0-9a-zA-Z_\-]+)$ index.php?category=$1&page=$2 [L]

但这只是解决方案的一半,因为我需要修改我的PHP以检查类别是否已设置,如果不匹配则发送404。否则/invalid_category/valid_page仍然有用。

首先,这些想法让我朝着正确的方向前进,谢谢。