1

我今天刚刚启动了我的新网站,我遇到了一些 .htaccess 文件问题。我以为我在将网站推出现场之前解决了所有问题,但显然不是。

网站:http: //OliverCrow.com/

我的 .htaccess 文件目前看起来像这样:

ErrorDocument 400 /errors/400.html
ErrorDocument 401 /errors/401.html
ErrorDocument 403 /errors/403.html
ErrorDocument 404 /errors/404.html
ErrorDocument 500 /errors/500.html

Options -Indexes

DirectoryIndex index.php /errors/404.html

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L,QSA]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(.*)/index\.php [NC]
RewriteRule ^ /%1 [R=301,L]

我真的不知道这是如何工作的,但我在网上得到了大部分内容,而且它似乎有效。

我遇到的问题是,例如,如果我输入“OliverCrow.com/About”一切正常,但如果我输入“OliverCrow.com/about”或“OliverCrow.com/About/”或“OliverCrow .com/about/" 一切都出错了,似乎 CSS 出于某种原因没有加载,我认为这可能可以使用 .htaccess 文件修复,尽管我不知道该怎么做。

4

1 回答 1

0

让我先说一下:我认为您不应该使用 .htaccess 来解决此问题。当您已经拥有运行您的站点的更大的 PHP 代码库时,.htaccess 会变得不必要地复杂。

现在继续。您的 .htaccess 文件复杂且臃肿。你打开你的重写引擎两次。我刚刚完成了一个更大的 PHP 项目,我的 .htaccess 中唯一的东西是:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]

这会给你 $_GET['url'] 你可以摆弄。然后你可以使用这样的东西:

if (isset($_GET['url']) && !empty($_GET['url'])) {
    $url = $_GET['url'];
    unset($_GET['url']);
    $v = explode('/', $url);

    $lowerCaseAction = strtolower($v[0]);
}

然后 $lowerCaseAction 将是“关于”或类似的东西。但这一切都取决于您的 PHP 代码。现在给你一个更精确的解决方案有点困难。

于 2013-08-11T22:52:09.593 回答