怎么了?什么都不会加载(几乎)!

时间:2012-09-13 21:47:27

标签: php .htaccess mod-rewrite

好的......我的头衔有点夸张......

我的网站是用PHP构建的,我正在尝试“require_once”的所有文件都没有被加载。我改变的唯一文件是我的.htaccess文件。我不知道关于.htaccess的事情,我所拥有的仅仅是搜索网络。怎么了?感谢您提前提供任何帮助。

RewriteEngine on

<Files 403.shtml>
order allow,deny
allow from all
</Files>
ReWriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
ReWriteRule !index.php index.php [L]

另外,如果我注释掉底部两行,我的网站效果很好。

2 个答案:

答案 0 :(得分:1)

好吧,require_once.htaccess文件无关:它是PHP指令,而不是Apache指令。您必须正确设置文件include_path以确保这些目录和文件可以访问(即,设置了正确的权限)。

如果您显示失败的require收到的错误消息,那么就如何解决此问题提供具体的建议要简单得多。

更新如果您需要将.php文件的所有非AJAX请求重定向到index.php,您的.htaccess应该是这样的:

RewriteEngine on

RewriteCond %{HTTP:x-requested-with} ^XMLHttpRequest$
RewriteRule . - [L]

RewriteCond %{REQUEST_FILENAME} !-d
ReWriteRule .php$ index.php

这基本上意味着以下内容:“所有AJAX请求 - 根据您的需要,所有非AJAX请求,如果您没有使用某个目录并以.php结束 - 请转到index.php”。< / p>

如果不检查.php(或某些类似的检查),您将重定向到index.php所有脚本加载程序;而且,除非你从某些外部CDN那里做到这一点,否则它不适合你的情况。 )

答案 1 :(得分:0)

尝试将最后两行更改为:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]

如果您希望您的网址看起来像这样(您可能会这样做):

http://yoursite.com/some/path/somewhere

然后将最后一行更改为:

RewriteRule ^([^/]*)(.*)$ index.php?first=$1&second=$2

如果这是您想要达到的目标,请确保如果您要尝试:

http://yoursite.com/about

实际上没有一个名为about的文件夹,这一行:

RewriteCond %{REQUEST_FILENAME} !-d

检查是否存在名称为“about”的文件夹,如果存在,则页面不会重定向,文件也是如此,请说:

http://yoursite.com/about.html

如果about.html确实存在,那么该页面将不会重定向。

希望这是有道理的。

如果您需要更多信息,http://jrgns.net/content/redirect_request_to_index似乎相当简洁且有用。