Jea*_*moy 4 apache alias subdirectory
我有以下结构
/var/www/mysite/public/
/var/www/mysite/api/
Run Code Online (Sandbox Code Playgroud)
在这两个目录中,.htaccess 设置为重写 url,如下所示:
dev.domain.com/example/ => dev.domain.com/index.php?token=example
dev.domain.com/api/example => dev.domain.com/index.php?token=example
我的 apacheconf 看起来像这样
...
<VirtualHost *:80>
Servername dev.domain.com
DocumentRoot /var/www/mysite/public/
Alias /api/ "/var/www/mysite/api/"
<Directory "/var/www/mysite/api/">
Options Indexes FollowSymLinks
</Directory>
</VirtualHost>
...
Run Code Online (Sandbox Code Playgroud)
dev.domain.com/api/工作正常(它调用 www/api/index.php),但dev.domain.com/api/example/调用公共站点(www/public/index.php,查询字符串 token=例子)。
我认为 apache 指令 Alias 也重定向了子目录,但事实显然并非如此。有人能告诉我哪里错了吗?
所以这是一个重写问题:别名目录不应该在匹配的模式中。
这是最终的配置:apache 配置文件
...
<VirtualHost *:80>
ServerName dev.domain.com
DocumentRoot /var/www/mysite/public/
Alias /api/ /var/www/mysite/api/
<Directory /var/www/mysite/api/>
Options FollowSymLinks -Indexes
AllowOverride all
</Directory>
</VirtualHost>
...
Run Code Online (Sandbox Code Playgroud)
和 .htacess 文件位于 /api/ 目录中
Options FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301]
RewriteRule ^(.*)/(.*)/$ /api/index.php?object=$1&collection=$2 [QSA,L]
RewriteRule ^(.*)/$ /api/index.php?object=$1 [QSA,L]
Run Code Online (Sandbox Code Playgroud)
感谢@freedev 抽出时间。
| 归档时间: |
|
| 查看次数: |
23789 次 |
| 最近记录: |