我的问题可能很愚蠢,但我用Google搜索并没有找到答案......
假设我想在此给定网址中访问我的网站:www.mywebsite.com/something/something_else/?some_query_string = true (我把查询字符串放在那里,因为它会在那里,我不知道它在htaccess文件中是否有任何区别)
我希望它保持URL相同,但加载索引文件,无论哪个URL都不在服务器的根目录中。 我的服务器有一个“应用程序”文件夹,其中所有代码都是。
我该怎么做?
谢谢!
答案 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相同,这正是我所需要的......
感谢您的回答!