服务器更改后发生.htaccess中的奇怪问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了服务器更改后发生.htaccess中的奇怪问题相关的知识,希望对你有一定的参考价值。
我有一个有3个脚本的站点,即根目录下的viewgames.php
,play.php
和users.php
。我在同一个(根)目录中也有一个.htaccess文件。
清理URL的.htaccess代码是: -
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^search/(.*)$ ./viewgames.php?search=$1
RewriteRule ^category/(.*)$ ./viewgames.php?cat=$1
RewriteRule ^users/(.*)$ ./users.php?action=$1
RewriteRule ^play/(.*)$ ./play.php?gn=$1
RewriteRule ^([a-z]+)/?$ $1.php [NC]
ErrorDocument 404 /pagenotfound.php
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
当我在localhost(XAMPP)中开发时,我在访问干净的URL(使用上面的htaccess代码)时没有问题,例如localhost/MySite/play/foo
,localhost/MySite/category/action
,localhost/MySite/search/lolol
或localhost/MySite/users/myaccount
。
这显然意味着上面的.htaccess代码在我的localhost服务器中就像一个魅力。然后我将上面的代码上传到基于Apache的共享linux服务器,并遇到了一些奇怪的问题 -
https://example.com/category/blabla
工作正常,https://example.com/search/blabla
也是如此- 但网站
https://example.com/play/xyz
和https://example.com/users/anyaction
停止工作。我的意思是,页面加载正常,网站在那里,但没有$_GET
值传递给PHP脚本。因此,我无法获得参数gn
和action
的值。 (见上面的代码) - 我甚至尝试通过
var_dump
在脚本中使用$_GET
数组,并返回一个空数组,这意味着没有值发送到脚本。
请检查我的.htaccess代码。我对.htaccess完全是全新的,上面的代码只是一个复制的代码。我真的很感激这方面的任何帮助。
答案
它是这样的:
ErrorDocument 404 /pagenotfound.php
Options -MultiViews
RewriteEngine on
RewriteBase /
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
RewriteRule ^search/(.*)$ viewgames.php?search=$1 [L,QSA,NC]
RewriteRule ^category/(.*)$ viewgames.php?cat=$1 [L,QSA,NC]
RewriteRule ^users/(.*)$ users.php?action=$1 [L,QSA,NC]
RewriteRule ^play/(.*)$ play.php?gn=$1 [L,QSA,NC]
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^([a-z]+)/?$ $1.php [L,NC]
关闭MultiViews
选项以避免内容协商功能导致mod_rewrite
模块出现问题非常重要。
以上是关于服务器更改后发生.htaccess中的奇怪问题的主要内容,如果未能解决你的问题,请参考以下文章