我想让网页看起来很好看。
from
/index.php?a=grapes
to
/grapes
虽然,我遇到了一些问题。我希望a
拥有更多种类的字符,例如a-z A-Z 0-9 / _ - . [ ]
。
from
/index.php?a=Grapes.Are.Green/Red[W4t3r-M3l0n_B1G_Gr4p3]
to
/Grapes.Are.Green/Red[W4t3r-M3l0n_B1G_Gr4p3]
在index.php文件中我有
<?php
$a = $_GET["a"];
echo $a;
?>
只是为了测试网址是否正常运行。
现在我在.htaccess中有什么
RewriteEngine On
RewriteRule ^([a-zA-Z0-9/_]+)?$ index.php?a=$1
仅接受a-z A-Z 0-9 / _
。
-
添加到方括号中并将其作为其中一个
a
等于的字符我得到404错误。.
,我会输出index.php
。[
或]
,我会收到404错误。如果有人有解决方案,我很乐意看到它。此外,如果有人有时间,请你解释RewriteRule的每一部分,说明该部分的作用。谢谢!
答案 0 :(得分:0)
问题是你的一些角色是“特殊的”:
特殊字符:
(full stop) - match any character
* (asterix) - match zero or more of the previous symbol
+ (plus) - match one or more of the previous symbol
? (question) - match zero or one of the previous symbol
\? (backslash-something) - match special characters
^ (caret) - match the start of a string
$ (dollar) - match the end of a string
[set] - match any one of the symbols inside the square braces.
(pattern) - grouping, remember what the pattern matched as a special variable
因此,如果您想在网址中使用它们,则必须使用它们。
例如 .S?HTML?匹配“.htm”,“。shtm”,“。html”或“.shtml”
答案 1 :(得分:0)
RewriteEngine On
RewriteRule ^(.*)$ index.php?a=$1 [QSA]
最后的[QSA]
是让它工作的原因:)感谢jedwards建议使用接受所有字符的^(.*)$
。