保持URL相同,加载index.php

时间:2013-10-29 10:50:11

标签: php .htaccess redirect

我的问题可能很愚蠢,但我用Google搜索并没有找到答案......

假设我想在此给定网址中访问我的网站:www.mywebsite.com/something/something_else/?some_query_string = true (我把查询字符串放在那里,因为它会在那里,我不知道它在htaccess文件中是否有任何区别)

我希望它保持URL相同,但加载索引文件,无论哪个URL都不在服务器的根目录中。 我的服务器有一个“应用程序”文件夹,其中所有代码都是。

我该怎么做?

谢谢!

3 个答案:

答案 0 :(得分:2)

使用htaccess将所有请求重写为index.php(请求文件/目录/链接且存在时除外):

<IfModule mod_rewrite.c>

    Options +FollowSymLinks
    RewriteEngine on

    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l

    RewriteRule .* index.php [L]

</IfModule>

答案 1 :(得分:1)

如果您想使用Rewrite让您的请求由文件外部处理DocumentRoot,那么您可以与Alias指令结合使用。

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule .* application/index.php [PT]


Alias application /path/to/application

请注意RewriteRule上的[PT],这意味着'pass through' - 它确保将重写的url传递给其他apache模块,这些模块可能在处理它时很有用。

答案 2 :(得分:0)

结果我回答了自己的问题:

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

如果URL不存在,它会将index.php文件加载到“application”文件夹中,并保持URL相同,这正是我所需要的......

感谢您的回答!