我对我的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重写始终会失败。这可能是由于子域的重写条件所致,但是我看不到如何将两者结合起来。
答案 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]