HTACCESS 重写到子域 + 重写 url's
HTACCESS Rewrite to subdomain + rewrite url's
我对 HTACCESS 有疑问。我已经用我的 HTACCESS 试验了一段时间,并最终让 url 重写工作 - 结合我自己编写的 php 路由器。
我想重写 url,不仅是为了让它们看起来更干净,而且因为我将它用于 api。所以我可以做一个 GET/POST/PUT/DELETE 到 api/users 并添加一个新用户,更新或删除等
现在我将这些行用于 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/ [L,R=301]
现在唯一的问题是我似乎无法将它们组合起来。我想要一个 url 像:
demo.domain.com/api/user
如果我将两者分开使用,它们会像预期的那样工作,但结合 url 对 /api 的重写总是失败。这可能是由于子域的重写条件,但我看不出如何将两者结合起来。
我找到了解决方案,我还扩展了 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/ [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]
我对 HTACCESS 有疑问。我已经用我的 HTACCESS 试验了一段时间,并最终让 url 重写工作 - 结合我自己编写的 php 路由器。
我想重写 url,不仅是为了让它们看起来更干净,而且因为我将它用于 api。所以我可以做一个 GET/POST/PUT/DELETE 到 api/users 并添加一个新用户,更新或删除等
现在我将这些行用于 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/ [L,R=301]
现在唯一的问题是我似乎无法将它们组合起来。我想要一个 url 像:
demo.domain.com/api/user
如果我将两者分开使用,它们会像预期的那样工作,但结合 url 对 /api 的重写总是失败。这可能是由于子域的重写条件,但我看不出如何将两者结合起来。
我找到了解决方案,我还扩展了 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/ [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]