【问题标题】:htaccess for php api用于 php api 的 htaccess
【发布时间】: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/phpinfohttp://localhost/products 都得到 404。

文件结构现在是:

/var/www/api/phpinfo.php

/var/www/api/product/read.php(与上面没有变化,但仅供参考)

【问题讨论】:

    标签: php apache .htaccess mod-rewrite


    【解决方案1】:

    尝试添加:

    Options +FollowSymLinks
    

    以上:

    RewriteEngine On
    

    在您的 .htaccess 文件中。

    并删除

    RewriteCond %{REQUEST_FILENAME} !-d
    

    第二个规则为 productsdirectory 的形式存在,并且将不应用以下重写规则。

    【讨论】:

      【解决方案2】:

      好吧,经过一番玩弄和调查后,我得到了以下工作:

      RewriteEngine on
      
      RewriteRule "^phpinfo$" "api/phpinfo.php"
      
      RewriteRule "^products$" "api/product/read.php"
      

      【讨论】:

        【解决方案3】:

        使用这个:

        Options +FollowSymlinks
        RewriteEngine on
        
        RewriteCond %{REQUEST_URI} ^/?phpinfo/?$
        RewriteRule ^(.*)$ /phpinfo.php [NC,L]
        
        RewriteCond %{REQUEST_URI} ^/?products/?$
        RewriteRule ^(.*)$ api/product/read.php [NC,L]
        

        【讨论】:

        • 应该有/api,而不是api
        猜你喜欢
        • 1970-01-01
        • 2018-05-16
        • 1970-01-01
        • 2017-01-23
        • 2014-12-09
        • 2012-03-18
        • 1970-01-01
        • 2015-06-17
        • 2012-11-03
        相关资源
        最近更新 更多