Php .htaccess在特定的'上重定向错误;单词';

Php .htaccess在特定的'上重定向错误;单词';,php,apache,.htaccess,url-rewriting,Php,Apache,.htaccess,Url Rewriting,我知道有一些关于这类问题的问题,但是有了这些问题,我就不知道我的问题出在哪里了 .htaccess RewriteEngine On RewriteRule ^([a-zA-Z0-9]*)$ index.php?id=$1 [NC,L] <FilesMatch "admin.php"> AuthName "Member Only" AuthType Basic AuthUserFile D:/web/shorten/.htpasswd require

我知道有一些关于这类问题的问题,但是有了这些问题,我就不知道我的问题出在哪里了

.htaccess

RewriteEngine On
RewriteRule ^([a-zA-Z0-9]*)$ index.php?id=$1 [NC,L]

<FilesMatch "admin.php">
    AuthName "Member Only"
    AuthType Basic
    AuthUserFile D:/web/shorten/.htpasswd
    require valid-user
</FilesMatch>
因此,我们的计划是将所有字母数字都重写为index.php?id=stuff——工作正常。但不知何故,当正则表达式与单词admin匹配时,它会出错。我得到的结果是admin/?id=admin-这当然会导致404

直接访问admin.php可以很好地使用auth和其他工具,正如预期的那样

它似乎与现有的admin.php有问题,但为什么以及如何避免这个问题?

有趣的故事

Chrome(最终也是其他浏览器)缓存重定向。据我所知,这只是针对301的,但似乎它们都被缓存了

所以这个奇怪的重定向是一个错误的重定向,它是由篡改重定向引起的

不管怎样,谢谢你试着帮助我。:)

有趣的故事

Chrome(最终也是其他浏览器)缓存重定向。据我所知,这只是针对301的,但似乎它们都被缓存了

所以这个奇怪的重定向是一个错误的重定向,它是由篡改重定向引起的


不管怎样,谢谢你试着帮助我。:)

当你在url中写admin时,它传递的是
index.php?id=admin
,当你传递admin.php时,它工作正常,所以我认为你必须检查当id值为admin时你应该做什么,这就是我得到的。现在,index只打印id的值,暂时没有处理。但是如果它对你有用的话,我想它与我的apache设置有关?编辑:读错您的评论-问题是它没有通过
?id=admin
传递admin,它只是做了一些奇怪的重定向到
admin/?id=admin
。检查您的Apache设置中是否启用了
多视图
。如果是,请尝试使用以下选项禁用它:
选项-多视图。
。如果Apache找不到文件(在您的例子中是
admin
),并且启用了多视图,Apache将在文件夹中查找具有该名称的任何文件。在您的情况下,
admin.*
(您确实有)。
MultiViews
不在此目录(或任何其他目录)的选项中。无论如何,请尝试显式禁用它,以防它被全局设置。这可能不是问题,但有一个错误。(最近有一个非常类似的问题,禁用它确实解决了这个问题):)当你在url中写admin时,它会传递
index.php?id=admin
,当你传递admin.php时,它工作正常,所以我想你必须检查当id有值admin时你应该做什么,这就是我得到的。现在,index只打印id的值,暂时没有处理。但是如果它对你有用的话,我想它与我的apache设置有关?编辑:读错您的评论-问题是它没有通过
?id=admin
传递admin,它只是做了一些奇怪的重定向到
admin/?id=admin
。检查您的Apache设置中是否启用了
多视图
。如果是,请尝试使用以下选项禁用它:
选项-多视图。
。如果Apache找不到文件(在您的例子中是
admin
),并且启用了多视图,Apache将在文件夹中查找具有该名称的任何文件。在您的情况下,
admin.*
(您确实有)。
MultiViews
不在此目录(或任何其他目录)的选项中。无论如何,请尝试显式禁用它,以防它被全局设置。这可能不是问题,但有一个错误。(最近有一个非常类似的问题,禁用它确实解决了它):)要尽快将此标记为正确的,所以表面上希望我检查我的事实2天..要尽快将此标记为正确的,所以表面上希望我检查我的事实2天。。
shorten
    - .htaccess
    - .htpasswd
    - admin.php
    - index.php