前一段时间我发布了一个关于.htaccess Rewrite Conditions
的问题以及如何实现更易读的URL。这样的URL就像这样:http://somedomain.com/variable/variable/variable/
RewriteCond
工作得很好,但现在我注意到了一些反响。使用.htaccess
的子目录(在我的情况下,我将其用于AuthUser
)将被根.htaccess
RewriteCond
语句忽略。我试图指定包含.htaccess
的文件夹,但它是命中或未命中。在一台计算机上,它运行良好,我可以很好地访问URL但在另一台计算机上,我不能。最终最终发生的是我试图访问的URL(在这种情况下," / pricing")最终将变量(定价)传递给我的索引处理程序。
所以不用多说,这里是:
Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/pricing
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !index\.php [NC]
RewriteCond %{REQUEST_URI} ^/([^/]+)/([^/]+)/([^/]+)/([^/]+)/? [NC,OR]
RewriteCond %{REQUEST_URI} ^/([^/]+)/([^/]+)/([^/]+)/? [NC,OR]
RewriteCond %{REQUEST_URI} ^/([^/]+)/([^/]+)/? [NC,OR]
RewriteCond %{REQUEST_URI} ^/([^/]+)/? [NC]
RewriteRule . index.php?prefix=%1&month=%2&day=%3&title=%4 [L,NC]
有没有人建议在这里改变?我的意思是,我不明白子目录中的另一个.htaccess
是如何导致这种情况发生的。
谢谢你, 克里斯
答案 0 :(得分:0)
您构建规则的方式不会起作用,因为捕获的变量只能从最近的RewriteCond获得。
您可以这样做:
Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/pricing
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)(?:/([^/]*)(?:/([^/]*)(?:/([^/]*))?)?)?/?$ index.php?prefix=%1&month=%2&day=%3&title=%4 [QSA,L]