2017-12-18 11 views
1

初めてhtaccessファイルを設定しようとしています。私は周りを探索し、私が間違っていることを理解することはできません。私は、次の操作を行いますしようとしています:htaccess for php api

1 - 私はhttp://localhost/phpinfoがphpinfo.phpをロードしたいと思います(これは動作します)

2の/ var/www /ののphpinfo/PHPに位置して - 私は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の

<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> 

ためApache.config任意のアイデアや右方向を指すが大幅ボードのコメントに取って

更新:-)いただければ幸いです(ありがとう)、まだ喜び:-(

次のように.htaccessファイルを変更しました。私はそれが私に偽陽性を与えていたかもしれないと思ったので、私はルートディレクトリからPHPファイルを移動しました。

<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(上記から変化なしが、参照のために含ま)

答えて

0

追加してみてください:

Options +FollowSymLinks 

上:

RewriteEngine On 

.htaccessファイルにあります。

そしてがディレクトリと、次の書き換えルールは適用されませんように存在する製品として二番目のルールの

RewriteCond %{REQUEST_FILENAME} !-d 

を削除します。

0

使用この:

Options +FollowSymlinks 
RewriteEngine on 

RewriteCond %{REQUEST_URI} ^/?phpinfo/?$ 
RewriteRule ^(.*)$ /phpinfo.php [NC,L] 

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

は、それが持つべき '/ api'、ではなく' APIを'? – GolezTrol

+0

@GolezTrolあなたは正しく編集します。ありがとう – Ivan86

0

まあ、遊んと捜査の公正ビットの後、私は仕事に、次の得た:

RewriteEngine on 

RewriteRule "^phpinfo$" "api/phpinfo.php" 

RewriteRule "^products$" "api/product/read.php"