【发布时间】:2015-12-04 18:53:11
【问题描述】:
问题是关于翻译 RazorCMS (razorcms.co.uk) 重写规则,但我认为答案可以笼统。
我有两个 .htacces 文件。首先是在主目录(/)中。我翻译了:
RewriteRule ^(.*)$ index.php?path=$1 [L,QSA]
到
location / { try_files $uri $uri/ @rewrite; }
location @rewrite { rewrite ^/(.*)$ /index.php?path=$1; }
这个没问题。
第二个 .htacces 文件位于子目录 (/rars) 中。 里面的内容是:
RewriteRule ^login/u/(.*)/p/(.*)$ index.php?login=1&u=$1&p=$2 [L,QSA]
RewriteRule ^login index.php?login=1 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?path=$1 [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L,QSA]
我试着把它翻译成不同的规则:
location /login { rewrite ^/login/u/(.*)/p/(.*)$ /index.php?login=1&u=$1&p=$2 break; }
location /login { rewrite ^/login /index.php?login=1 break; }
location /rars { if (!-e $request_filename){ rewrite ^(.*)$ /index.php?path=$1; } }
...但它不起作用。
如果第二个 .htaccess 在子目录中,我如何将 .htaccess 规则转换为 Nginx 重写?你能指出我正确的方向吗?
【问题讨论】:
标签: .htaccess nginx url-rewriting