HTACCESS重写为子域+重写url

时间:2018-10-01 12:08:37

标签: .htaccess url-rewriting subdomain

我对我的HTACCESS有疑问。我已经尝试了HTACCESS一段时间,最后将URL重写工作了-与我自己编写的php路由器结合使用。

我想重写URL,不仅使它们看起来更整洁,而且还因为我将其用于api。因此,我可以对api /用户执行GET / POST / PUT / DELETE并添加新用户,更新或删除等。

现在,我将这些行用于URL重写:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule .*/api/(.*)$ api.php [QSA,L]

用于将子域重新路由到我使用的文件夹

RewriteCond %{HTTP_HOST} ^demo\.example\.com [NC]
RewriteRule (.*) http://example.com/demo/$1 [L,R=301]

现在唯一的问题是我似乎无法将这些结合起来。我想要一个网址,例如:

  

demo.domain.com/api/user

如果我将两者分开使用,它们会像预期的那样工作,但是结合使用/ api的URL重写始终会失败。这可能是由于子域的重写条件所致,但是我看不到如何将两者结合起来。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,也扩展了htacces。。这是我的htaccess文件:

# No Caching for page files
<filesMatch "\.(html|htm|js|css|php)$">
<IfModule mod_headers.c>
    Header set Cache-Control "no-cache, no-store, must-revalidate"
    Header set Pragma "no-cache"
    Header set Expires 0
</IfModule>
</filesMatch>

# Error pages
ErrorDocument 404 https://%{HTTP_HOST}/#/404
ErrorDocument 500 https://%{HTTP_HOST}/#/500

RewriteEngine On

# Rewrite www to non
RewriteCond %{HTTP_HOST} !=""
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R,L]

# Rewrite http to https
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

# Ignore conditions for files and folders
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteBase /

# Rewrite /api to api.php
RewriteRule ^api/(.+)$ api/api.php [QSA,L]

# Rewrite /downloads to downloads.php
# RewriteRule ^download/(.+)$ download/download.php [QSA,L]