0

我在 appache 上设置了https://github.com/lencioni/SLIR 。它有一个 htaccess 文件并且运行良好。现在我已经搬到 Nginx 并希望 SLIR 以同样的方式工作。以下是我需要转换的内容。

# Prevent other scripts from interfering with SLIR
php_value auto_prepend_file none
php_value auto_append_file none

# Pretty URLs
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [S=40]
RewriteRule . index.php [L]
</IfModule>

# Prevent viewing of the error log file in its default location
<Files slir-error-log>
Order Deny,Allow
Deny from All
</Files>

除了下面的行,我能够转换所有内容

RewriteRule ^.*$ - [S=40]

有任何想法吗?谢谢

4

2 回答 2

1

尝试这个:

if (!-f $request_filename) { rewrite ^.*$ /index.php last; } # check for file
if (!-d $request_filename) { rewrite ^.*$ /index.php last; } # check for dir

编辑在我的服务器上检查 - 这条单行适用于两者,(目录和文件)

if (!-e $request_filename) { rewrite ^(.+)$ /index.php last; }
于 2013-03-27T12:23:13.700 回答
0

S标志告诉 mod_rewrite 跳过一些以下规则(在您的情况下,它是40)。您也可以将您的规则更改为:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

可能更容易转换。

于 2013-03-27T10:51:27.510 回答