初めて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/phpinfoとhttp://localhost/productsの両方のために404を取得します。
ファイル構造は、次のようになる:
/var/www/api/phpinfo.php
/var/www/api/product/read.php(上記から変化なしが、参照のために含ま)
は、それが持つべき '/ api'、ではなく' APIを'? – GolezTrol
@GolezTrolあなたは正しく編集します。ありがとう – Ivan86