.htaccess文件
RewriteEngine on
#FIRST RULE
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
#2ND RULE
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^([^/]+)/?$ ?page=$1 [L]
#3RD RULE
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.*)$ ./edit-page?edit=$1
现在让我解释一下上面的代码。
FIRST重写规则将删除所有.php
扩展名,因此,如果我有http://localhost:8888/index.php
,则可以使用http://localhost:8888/index
来访问它,而没有.php扩展名
SECOND重写规则将转换此链接:
http://localhost:8888/CodeArk/?page=introduction-page
进入
http://localhost:8888/CodeArk/introduction-page
问题是最后一条规则(第3条规则)。
它应该转换此链接:
http://localhost:8888/CodeArk/edit-page/?edit=introduction-page
进入
http://localhost:8888/CodeArk/edit-page/introduction-page
现在这行不通,因为当我尝试在edit-page.php文件中获取edit
的值时
edit-page.php
echo "YOUR EDIT IS: "$_GET['edit'];
输出为
YOUR EDIT IS: edit-page/introduction-page.php/introduction-page
发生了什么事?输出应该只有这个
YOUR EDIT IS: introduction-page
我怀疑我的重写规则是原因,但我不知道原因。请帮助
答案 0 :(得分:0)
最后解决了。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*?)/?$ $1.php [L]
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^([^/]+)/?$ ?page=$1 [L]