重写URL的Apache

时间:2017-01-03 00:55:48

标签: php wordpress apache .htaccess mod-rewrite

好的,这已经让我疯了一段时间了。有很多关于如何使用.htaccess文件重写URL的信息。但由于某种原因经过几个小时的尝试后,我仍然没有对我的网址产生任何影响。我已经尝试将指令移动到apache2.conf,仍然没有运气。我不擅长服务器管理员的东西,但我到了那里。我注意到那里有很多网站,可能是由网页设计师和wordpress网站建造的,或者你有什么,甚至他们都有干净的网址。

所以AFAIK我需要做的就是粘贴其中一个mod重写规则,例如

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

到我的public_html目录中名为.htaccess的文件。出于某种原因,这对我不起作用。我正在使用数字海洋所以我有机会错过了设置我的LAMP服务器的一些关键步骤,因为我说我仍然要掌握服务器管理员。任何帮助或建议非常感谢!

1 个答案:

答案 0 :(得分:0)

对于大多数php框架(wordpress,laravel等),所有不真实的网址请求'目录或文件被重定向到单个入口点。例如。 index.php,处理请求并相应显示页面。

这是一个简单的示例,其中所有非实际目录或文件的请求都被重定向到index.php并进行处理:

的.htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [NC,L]

的index.php

<?php

switch($_SERVER['REQUEST_URI']) {
    default:
        echo "404: Page cannot be found";
        break;
    case 'page1':
        echo "This is page 1";
        break;
    case 'page2':
        echo "This is page 2";
        break;  
    case 'page3':
        echo "This is page 3";
        break;      
}

因此,如果您转到http://somedomain.com/page1,它将显示&#34;这是第1页&#34;。如果您转到http://somedomain.com/page4,则会显示&#34; 404:无法找到页面&#34;。