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

4
我在 mod_rewrite 上遇到了一些困难。 我该如何编写规则以决定以下内容:
如果我浏览/en/page/page,我想将其重写为:index.php?language=en&page=/page 但是,如果我只浏览/page,我想将其重写为:index.php?page=/page 这种情况是否可能?
编辑:/page 只是一个随机的动态页面名称,它也可以是任何名称。
我需要一个规则来检查类似/se == 一个字符串,而不是超过2个字符的 /page --> index.php?lang=se&page=/page,如果浏览的是页面/page,它会注意到/page==长度大于2个字符并重写为index.php?page=/page 编辑2: 找到了我的问题的答案:
RewriteEngine On RewriteBase /
## 检查是否不是文件名或目录名 RewriteCond %{REQUEST_FILENAME} !-l RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d
## 重写规则 RewriteRule ^(.{2})/(.*)$ index.php?lang=$1&page=$2 [L] RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]
3个回答

3

我自己成功实现了!如果有其他人也需要做同样的事情,以下是规则:

    RewriteEngine    On
    RewriteBase    /
## 检查是否不是文件名或目录名 RewriteCond %{REQUEST_FILENAME} !-l RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d
## 重写规则 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]

0

试试这个:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接