.htaccess如何获取完整的URL

时间:2018-11-15 10:16:55

标签: .htaccess mod-rewrite

我正在编写一个.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命令,但也没有起作用。

0 个答案:

没有答案