我正在编写一个.htaccess重定向/重写文件,该文件使用正则表达式来“查看”完整的URL,例如:
输入网址:http://www.my.site.com/demo/home/
通过重定向/重写,我想执行以下操作:
1) Change http to https
2) Remove www
3) Inject Symfony2 'parts' into the URL, when missing, i.e,: /app_dev.php/contoller
4) Add /home, if missing
5) Move the /demo subdirectory to the end of the URL, after /home
6) Remove the ending /, if present
输出网址:https://my.site.com/app_dev.php/contoller/home/demo
我已经尝试了一些示例,这些示例是我在搜索.htaccess重定向和.htaccess重写时发现的示例中看到的,但是到目前为止,对我来说似乎没有任何效果。我认为这是因为我没有使用正确的%{variable}来查看整个URL,包括该域后面的http://或https://部分以及子目录部分。
# $1 $2 $3 $4 $5
# RedirectMatch ^(?:http(?:s)?://)?(?:www\.)?my(\.dev)?\.site\.com(/[a-z0-9]+)?(?:/app(_dev)?\.php)?(?:/contoller)?(/home)?(/[^/]+)?(?:/)?$ https://my$1.site.com/app$3.php/controller/home$2$5
# $1 $2 $3 $4 $5
RewriteCond %{REQUEST_URI} ^(?:http(?:s)?://)?(?:www\.)?my(\.dev)?\.site\.com(/[a-z0-9]+)?(?:/app(_dev)?\.php)?(?:/controller)?(/home)?(/[^/]+)?(?:/)?$
RewriteRule ^(.*)$ https://my$1.site.com/app$3.php/controller/home$2$5 [L]
我的第一个想法是使用RedirectMatch命令,因为它似乎是最简洁和直接的命令,但是当该命令不起作用时,我切换到RewriteCond / RewriteRule命令,但也没有起作用。