1

目前我设置了一个这样的重写规则,以生成干净简单的 url。

.htaccess

RewriteRule ^/about$  about.php  [L]

但我需要做的是一些不同的事情,相反。例如,如果用户单击以下链接

<a href="index.php?a=page&b=about">about</a> 

他们会去关于页面/about

目前关于页面位于,index.php?a=about&b=user遗憾的是无法更改。如您所见,它在浏览器地址栏中看起来不太好。

已编辑

我正在使用phpdolphin的预制脚本,它工作正常。但是网址都是index.php基于的,我想清理它们

目前 .htaccess 文件中的唯一代码

RewriteEngine on

RewriteCond %{request_filename} -f
RewriteRule ^(.*) $1 [L]
RewriteRule ^(([^/]*)+)(/([^/]{0,32})(/.+)?)?$  index.php?a=$1&q=$3    [L]
4

3 回答 3

0

试试这个我检查过,它的工作原理......

RewriteEngine On

RewriteRule    ^([A-Za-z0-9-+_%*?]+)/([A-Za-z0-9-+_%*?]+)/?$    index.php?a=$1&q=$2     [L]

注意:必要时在 [] 之间添加额外的符号

或这个

RewriteRule    ^([^~]+)/([^~]+)/?$    index.php?a=$1&q=$2

我喜欢使用这段代码,因为它很短并且匹配除了 ~ 之外的所有内容,这在 url 中非常罕见

于 2013-09-22T09:00:58.197 回答
0

您可以添加此 RewriteRule 以在用户点击时重定向请求index.php?a=about&b=user

    RewriteCond %{QUERY_STRING}         ^(.*)a=about(.*)$    [NC]
    RewriteRule ^index.php        /about [L,NC,R=301]

或者您可以使用 index.php 中的 phpheader()函数来重定向请求:

if ($_REQUEST['a'] == about) {
    header('Location: /about');
    exit;
}
于 2013-09-22T08:31:01.380 回答
0

在现有规则之前添加此规则:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php\?a=([^&]+)&b=user[\s&] [NC]
RewriteRule ^ /%1? [R=301,L]

RewriteRule ^([^/.]+)/?$ index.php?a=$1&b=user [L,NC,QSA]
于 2013-09-22T08:14:52.143 回答