子文件夹的RewriteEngine

时间:2019-04-08 10:56:52

标签: regex apache mod-rewrite

我在同一域中有2个项目。 子文件夹中的项目具有RESTApi,应通过端点对其进行访问: mydomain.com/supplies/api/v1.0/orders.json

但是,当我尝试访问端点时,出现404错误。

根mydomain.com /

中的

.htaccess文件

ErrorDocument 400 /error.php
ErrorDocument 403 /error.php
ErrorDocument 404 /error.php
#Options -Indexes +FollowSymLinks

# FollowSymLinks must be activated for the rewrite to work
RewriteEngine On

.htaccess位于子文件夹mydomain.com/supplies /

RewriteEngine On
RewriteRule "([^/]*)/?api/(.*)?$" "index.php?process=api" [NC,L]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /supplies/error.php [L]
<ifModule mod_expires.c>
  ExpiresActive On
  ExpiresDefault "access plus 1 seconds"
  ExpiresByType text/html "access plus 1 seconds"
  ExpiresByType image/gif "access plus 259200000 seconds"
  ExpiresByType image/jpeg "access plus 259200000 seconds"
  ExpiresByType image/png "access plus 259200000 seconds"
  ExpiresByType text/css "access plus 60480000 seconds"
  ExpiresByType text/javascript "access plus 21600000 seconds"
  ExpiresByType application/x-javascript "access plus 21600000 seconds"
</ifModule>
<ifModule mod_headers.c>
  <filesMatch "\\.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$">
    Header set Cache-Control "max-age=25920000, public"
  </filesMatch>
  <filesMatch "\\.(css)$">
    Header set Cache-Control "max-age=6048000, public"
  </filesMatch>
  <filesMatch "\\.(js)$">
    Header set Cache-Control "max-age=2160000, private"
  </filesMatch>
  <filesMatch "\\.(xml|txt)$">
    Header set Cache-Control "max-age=2160000, public, must-revalidate"
  </filesMatch>
  <filesMatch "\\.(html|htm|php)$">
    Header set Cache-Control "max-age=1, private, must-revalidate"
  </filesMatch>
</ifModule>
<ifModule mod_headers.c>
  Header unset ETag
</ifModule>
FileETag None
<ifModule mod_headers.c>
  Header unset Last-Modified
</ifModule>

有任何想法吗?

非常感谢您。

1 个答案:

答案 0 :(得分:0)

Hi I've just found a solution.

Inside the directory /supplies/api/ I've created a .htaccess with the following code:

DirectoryIndex /supplies/index.php?process=api
RewriteEngine on
RewriteBase /supplies/api/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /supplies/index.php?process=api [PT]

This works like a charm for me, thank you any way!