我无法获取我的.htaccess文件来重写URL。以下是我所确定的:
LoadModule rewrite_module modules/mod_rewrite.so
。<Directory "C:/xampp/htdocs">
下的httpd.conf文件有AllowOverride All
。mod_rewrite
置于已加载模块下。我目前正在使用XAMPP。
我的主目录是C:\xampp\htdocs\test
。
在test
文件夹中,我有一个基本的index.php
文件和.htaccess
文件。
在.htaccess
文件中:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$\ http://google.com [L]
#RewriteRule ^(.*)$\ index.php/$1 [L]
#RewriteBase /test/
.htaccess
文件,因为当我在文件中丢弃垃圾时,当我访问500 error
页面时,我会收到index.php
。.htaccess
规则适用于我的网络服务器。当我访问我的index.php
页面时,我没有被重定向。它只是正常加载页面。
我花了4个多小时寻找解决方案,但没有运气。我尝试了XAMPP和EasyPHP,但两者都有同样的问题。
如果有人有任何想法或建议,我将非常感激。
修改
以下是重新启动PC后启动Apache时的错误日志:
[Thu Jul 31 18:05:22.365119 2014] [ssl:warn] [pid 6380:tid 384] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name
[Thu Jul 31 18:05:22.396117 2014] [core:warn] [pid 6380:tid 384] AH00098: pid file C:/xampp/apache/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
[Thu Jul 31 18:05:22.512122 2014] [ssl:warn] [pid 6380:tid 384] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name
[Thu Jul 31 18:05:22.851147 2014] [mpm_winnt:notice] [pid 6380:tid 384] AH00455: Apache/2.4.9 (Win32) OpenSSL/1.0.1g PHP/5.5.11 configured -- resuming normal operations
[Thu Jul 31 18:05:22.851147 2014] [mpm_winnt:notice] [pid 6380:tid 384] AH00456: Apache Lounge VC11 Server built: Mar 16 2014 12:13:13
[Thu Jul 31 18:05:22.851147 2014] [core:notice] [pid 6380:tid 384] AH00094: Command line: 'c:\\xampp\\apache\\bin\\httpd.exe -d C:/xampp/apache'
[Thu Jul 31 18:05:22.853142 2014] [mpm_winnt:notice] [pid 6380:tid 384] AH00418: Parent: Created child process 3936
[Thu Jul 31 18:05:23.241170 2014] [ssl:warn] [pid 3936:tid 416] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name
[Thu Jul 31 18:05:23.388142 2014] [ssl:warn] [pid 3936:tid 416] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name
[Thu Jul 31 18:05:23.423146 2014] [mpm_winnt:notice] [pid 3936:tid 416] AH00354: Child: Starting 150 worker threads.
答案 0 :(得分:0)
你的模式中的\
正在搞砸一切。实际发生的是\
是转义空间,这使得mod_rewrite认为模式和目标都是模式,而[L]
标志是目标。 Apache指令和参数由空格分隔,因此当你转义空格时,它会使apache成为整个事物的单个参数。
你有什么:
RewriteRule ^(.*)$\ http://google.com [L]
|directive| | pattern | | target |
所以摆脱\
“
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://google.com [L]
因此指令为RewriteRule
,模式为^(.*)$
,目标为http://google.com
,标志为[L]
。
答案 1 :(得分:0)
我能想到的其他两个原因:
备注:我已检查过你的语法是否正常。