2

所以我试图将应用程序从 apache 移动到 NginX,但我发现我需要重新编写 .htaccess 文件,我已经环顾四周,但最后我需要寻求帮助。

下面是来自 apache 的 .htaccess 文件,我试图将所有请求重定向到 index.php,但对 /html、/css、/images、/php 的请求除外。

提前感谢您的帮助!账单

RewriteEngine on 
RewriteRule ^html [L,NC]
RewriteRule ^css [L,NC]
RewriteRule ^images [L,NC]
RewriteRule ^php [L,NC]
RewriteRule ^.*$ index.php [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !directory/(.*)$
RewriteCond %{REQUEST_URI} !(.*)$
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]

到目前为止,我有以下内容,对 html、css、图像和 php 文件的请求运行良好。

但是,当我向 www.domain.com/blah/blah/blah/ 发出请求时,我得到了 404,我真正想要的是将 URL 重新命名为 www.domain.com/blah/blah/blah/ 但加载index.php 文件

location ~ directory/(.*)$ {
}

location ~ (.*)$ {
}

location /html {
rewrite ^/html / break;
}

location /css {
rewrite ^/css / break;
}

location /images {
rewrite ^/images / break;
}

location /php {
rewrite ^/php / break;
}

location / {
rewrite ^(.*)$ /index.php break;
if (!-e $request_filename){
rewrite ^(.*)$ http://www.domain.com/$1 redirect;
}
}
4

1 回答 1

0

尝试按照以下方式过滤对特定文件夹中内容的请求:

RewriteEngine On
# if not requesting content in one of the specified folders
RewriteCond %{REQUEST_FILENAME} !^(html|css|images|php)/ [NC]
# redirect visitor to the index page
RewriteRule ^(.*)$ index.php [L,QSA]

重写条件前的感叹号 (!) 表示否定,因此如果请求的文件名不以 html 或 css 或 .... 开头,则应用重写规则。

于 2012-05-07T11:01:31.853 回答