首页 文章

PHP / Apache:使用.htaccess重写规则

提问于
浏览
4

我对mod_rewrite有点困境 .
如何编写将决定以下内容的规则:

如果我浏览 /en/page/page 我想将其重写为:
index.php?language=en&page=/page

但如果我只浏览 /page 我想重写为:
index.php?page=/page

这可能吗?

编辑:
/ page只是一个随机的动态页面名称,它也可以是 whatever .

我需要一个规则来检查/ se ==一个字符串,并且不超过2个字符> / page - > index.php?lang = se&page = / page如果浏览页面/页面它会注意到/ page ==超过2个字符并重写为index.php?page = / page

编辑2:找到我的问题的anser:

RewriteEngine On
    RewriteBase /

    ## Check if its not a filename or dirname
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    ## Rewrite rules
    RewriteRule ^(.{2})/(.*)$ index.php?lang=$1&page=$2 [L]
    RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]

3 回答

  • 0

    我让它自己工作!如果其他人需要做同样的事情,这是规则:

    RewriteEngine    On
        RewriteBase    /
    
        ## Check if its not a filename or dirname
        RewriteCond %{REQUEST_FILENAME}    !-l
        RewriteCond %{REQUEST_FILENAME}    !-f
        RewriteCond %{REQUEST_FILENAME}    !-d
    
        ## Rewrite rules
        RewriteRule ^(.{2})/(.*)$    index.php?lang=$1&page=$2 [L]
        RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]
    
  • 0
    RewriteRule ^page$ index.php?language=en&page=/page/page [L]
    RewriteRule ^page/ index.php?language=en&page=/page [L]
    
  • 3

    试试这个:

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

相关问题