我正在尝试重写我的nginx以使用http://domain.com/main
而不是使用http://domain.com/?page=main
我做完了:
try_files $uri $uri/ /index.php?page=$uri;
返回空白页
rewrite ^/(\w+)$ /index.php?page=$1 break;
rewrite ^/(\w+)+\/$ /index.php?page=$1 break;
if ($http_host !~ "^$"){
rewrite ^(.*)$ http%1://www.$http_host$request_uri redirect;
}
生成网址:http://domain.com/main/http://domain.com/main/http://domain.com/main
这是Apache .htaccess:
RewriteEngine on
RewriteRule ^(\w+)$ index.php?page=$1 [L,NC,QSA]
RewriteRule ^(\w+)+\/$ index.php?page=$1 [L,NC,QSA]
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
答案 0 :(得分:0)
我假设您对表单的URI具有工作配置:http://domain.com/?page=main
try_files $uri $uri/ /index.php?page=$uri;
可能无法正常工作,因为它会生成:
http://domain.com/?page=/main
请注意额外的/
。因此,您可能需要使用重写来提取不包括前导/
的URI的一部分。例如:
location / {
try_files $uri $uri/ @rewrite;
}
location @rewrite {
rewrite ^/(.*)$ /index.php?page=$1 last;
}
location \.php$ { ... }
请注意last
后缀而不是break
后缀,因为目标URI需要在其他位置处理。有关详细信息,请参阅this document。