当通过index.php重定向所有内容时,htaccess无限循环

时间:2017-03-18 16:43:40

标签: php apache .htaccess redirect mod-rewrite

我已经查看了解决方案,我发现的任何内容都没有阻止我的无限循环问题。

我对htaccess很新,请原谅我..

我正在为我正在构建的CMS运行WAMP服务器,我想通过index.php文件重定向所有页面请求,例如localhost / cms / pageName,同时保持URL不变。

#disable directory showing
Options -Indexes 

#error documents
ErrorDocument 404 cms/html/notfound.html
ErrorDocument 403 cms/html/notfound.html

#index
DirectoryIndex cms/html/index.php

RewriteEngine On 
Options +FollowSymlinks

RewriteBase /
RewriteRule ^admin/?$ cms/html/login.php
RewriteRule ^login.php?$ cms/php/login.php
RewriteRule ^reset_password?$ cms/html/reset_password.php
RewriteRule ^reset.php/?$ cms/php/reset.php
RewriteRule ^reset_action.php/?$ cms/php/reset_action.php

# Internally redirect all pages to index.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . cms/index.php/$1?%{QUERY_STRING} [L]

无论出于何种原因,重定向后它再次重定向,我不知道为什么......

1 个答案:

答案 0 :(得分:0)

使用包含单个语法错误的错误“.htaccess”文件完全崩溃其服务器非常容易。如果出现错误,只需重命名该文件或将其删除即可

我认为问题来自点后面的空格:

RewriteRule . cms/index.php/$1?%{QUERY_STRING} [L]

我不明白为什么你需要这样做,我告诉你,你也可以模拟网址重写

在你的.htaccess文件中

你需要写这一行:

errordocument 404 /index.php

并在index.php文件中,你可以写这个来模拟网址重写:

$url = $_SERVER['REQUEST_URI'];

$url=substr($url,1,strlen($url));  // The page url that gave an error 404

echo $url;

接下来,如果需要,您可以创建出现404错误并将用户重定向到该页面的页面

$handle = fopen($url.'/index.html', 'w');
fwrite($handle, 'hello world');
fclose($handle);

header('location:'.$url);
exit;