【发布时间】:2019-03-03 14:30:01
【问题描述】:
我试图同时删除 .php 扩展名。所以例如“http://localhost/timetable/login”而不是“http://localhost/timetable/login.php”
但也有
“http://localhost/timetable/38/”而不是 "http://localhost/timetable/index.php?week=38"
我能够让其中一个或另一个工作,但不能同时工作。我假设它是因为它们之间存在冲突,但我不够先进,无法找到它。
这是我的 .htaccess 文件:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [NC,L]
RewriteRule ^([0-9]+)$ index.php?week=$2
RewriteRule ^([0-9]+)/$ index.php?week=$2
如果我在地址栏中输入“http://localhost/timetable/38”,它会将我带到“http://localhost/38/”并出现找不到对象错误。
有谁知道问题出在哪里?
更新:我现在可以转到该页面,但是
echo $_GET['week'];
返回空结果,所以它忽略了“http://localhost/timetable/40”中的 40
【问题讨论】:
-
听起来很奇怪,无法用您发布的规则来解释。必须有其他的重写规则。请将这些添加到问题中。
-
只需删除文件的倒数第二行并将最后一行替换为:
-
@arkascha 没有其他规则就是整个文档。
-
@Martin 我试过了,但没有帮助。
-
我相信应该是 1 美元而不是 2 美元。试试看:
RewriteRule ([0-9]+)/?$ index.php?week=$1 [QSA,L]