Я настроил свои правила перезаписи 301 в разных файлах (на основе шаблонов URL) и создал файл правил для вызова других файлов.Я добавил If
условия в мой файл правил на основе шаблонов URL.Но мое условие If
не вызывается должным образом, сначала вызываются правила вне условия If
, затем выполняется условие, затем If
.
<If "%{REQUEST_URI} =~ m#^/category1#i">
Include conf.d/sites.d/example/301_redirections_category1.conf
</If>
<ElseIf "%{REQUEST_URI} =~ m#^/category2#i">
Include conf.d/sites.d/example/301_redirections_category2.conf
</ElseIf>
<Else>
Include conf.d/sites.d/example/301_redirections_vanity.conf
</Else>
Мой виртуальный хост выглядит так:
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule dispatcher_module modules/mod_dispatcher.so
<VirtualHost *:80>
ServerName www.example.com
RewriteEngine on
Include conf.d/sites.d/example/301_redirections.conf
Include conf.d/sites.d/example/rewrite.conf
LogLevel alert rewrite:trace6
<Directory />
<IfModule disp_apache2.c>
ModMimeUsePathInfo On
SetHandler dispatcher-handler
</IfModule>
ErrorDocument 404 "/error/pagenotfound.html"
ErrorDocument 500 "/error/errorpage.html"
ErrorDocument 403 "/error/pagenotfound.html"
Options FollowSymLinks
AllowOverride None
# Insert filter
SetOutputFilter DEFLATE
# Don't compress images
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png)$ no-gzip dont-vary
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
# prevent clickjacking
Header always append X-Frame-Options SAMEORIGIN
</Directory>
</VirtualHost>
Когда я нажимаю URL, скажем, https://www.example.com/category2
, сначала выполняются правила conf.d/sites.d/example/rewrite.conf
, затем вызывается мой файл конфигурации conf.d/sites.d/example/301_redirections.conf
.
Если я добавляю какое-либо правило до или после If-Else
при условии, что дополнительные правила вызываются должным образом, а затем блокируется If-Else
, так что проблема в том, что только в блоке.