【发布时间】:2018-06-01 08:35:36
【问题描述】:
我第一次尝试配置 htaccess 文件。我四处寻找,无法弄清楚我做错了什么。我正在尝试执行以下操作:
1 - 我希望http://localhost/phpinfo 加载位于 /var/www/phpinfo/php 的 phpinfo.php(此方法有效)
2 - 我希望 http://localhost/products 加载 api/product/read.php(位于 /var/www/api/product/read.php)但它返回 404 - 请求的 URL /products/ 不是在此服务器上找到
我显然将 .htaccess(位于 /var/www/.htaccess)文件配置错了,但我完全搞糊涂了!
.htaccess 文件
<IfModule mod_rewrite>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/phpinfo/$ phpinfo.php [NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/products/$ api/product/read.php [NC,L]
</IfModule>
AllowOverride 的 Apache.config
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
#<Directory /srv/>
# Options Indexes FollowSymLinks
# AllowOverride None
# Require all granted
#</Directory>
任何想法或指向正确方向将不胜感激:-)
更新加入 cmets(谢谢),仍然不高兴:-(
所以,现在我修改了 .htaccess 文件,如下所示。我已将 phpfile 移出根目录,因为我认为这可能会给我一个误报,结果确实如此。
<IfModule mod_rewrite>
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/?phpinfo/?$
RewriteRule ^(.*)$ /api/phpinfo.php [NC,L]
RewriteCond %{REQUEST_URI} ^/?products/?$
RewriteRule ^(.*)$ /api/product/read.php [NC,L]
</IfModule>
现在,两种重写都不起作用,http://localhost/phpinfo 和 http://localhost/products 都得到 404。
文件结构现在是:
/var/www/api/phpinfo.php
/var/www/api/product/read.php(与上面没有变化,但仅供参考)
【问题讨论】:
标签: php apache .htaccess mod-rewrite