我在理解重写规则时遇到了问题。基本上我要做的就是改变这个:
http://domain.com/Intern/guangjian/gallery/?page=admin_login
进入这个:
http://domain.com/Intern/guangjian/gallery/admin_login
当我将各种规则应用于.htaccess文件时,我不断收到500内部服务器错误。请帮忙。目前我有以下内容:
RewriteEngine ON
RewriteCond %{QUERY_STRING} ^(\w+)=(\w+)$
RewriteRule ^/%2
我承认我并不真正理解所有符号的含义。
答案 0 :(得分:0)
符号使用字符编码
将字符转换为特定集合中的字节序列实施例
原始网址。 例如。 http://flickr.com/users.php?id=username&page=2
重写友好网址。 例如。 http://flickr.com/username/2
//第一个参数
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ users.php?user=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ users.php?user=$1
//第二个参数
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)$ users.php?user=$1&page=$2
RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)/$ users.php?user=$1&page=$2
答案 1 :(得分:0)
将此代码放在/Intern/guangjian/gallery/.htaccess
文件中:
RewriteEngine On
RewriteBase /Intern/guangjian/gallery/
RewriteCond %{THE_REQUEST} /\?page=([^\s&]+) [NC]
RewriteRule ^ %1? [R=302,L]
RewriteRule ^([^/.]+)/?$ ?page=$1 [L,QSA]
答案 2 :(得分:0)
重写规则语法为: RewriteRule Pattern Substitution [flags] 。
这意味着只有标志(L,NC,R等)是可选的,匹配的模式和替换部分是必需的。但是你只指定了一个,这就是你得到500内部服务器错误的原因。
您不需要RewriteCond。试试这个:
RewriteEngine ON
RewriteRule ^(.*)\?(\w+)=(\w+)$ $1/$3
您正在获取?的所有内容,然后将 page 的值或查询字符串的任何参数附加到网址。这当然只有在查询字符串中只有一个参数时才有效,在其他情况下正则表达式不匹配。