1

シンプルな .htaccess 書き換えルールを機能させようとしていますが、うまくいかないようです。

私の .htaccess は次のようになります。

RewriteEngine On
RewriteRule ^api$ phpinfo.php
ErrorDocument 404 /error.php

php_flag  display_errors                  on
php_flag  display_startup_errors          on
php_flag  file_uploads                    on
php_value error_reporting                 2047
php_value max_input_time                  60
php_value post_max_size                   8M
php_value upload_max_filesize             2M

にアクセスすると、それが見つからない/apiという 404 エラーが表示されます。/api

私のApache confファイルは次のようになります。

<IfModule mod_ssl.c>
  NameVirtualHost 10.104.17.3:443
  <VirtualHost 10.104.17.3:443>
    ServerName orddev.foo.com.au
    DocumentRoot /var/www/orddev.foo.com.au___443/html
    <Directory />
      Options FollowSymLinks
      AllowOverride All
    </Directory>
    <Directory "/var/www/orddev.foo.com.au___443/html">
      Options FollowSymLinks MultiViews IncludesNOEXEC
      AllowOverride All
      Order allow,deny
      Allow from all
    </Directory>
    <IfModule mod_php5.c>
      php_admin_value upload_tmp_dir "/var/www/orders.foo.com.au___443/resources/_tmp/upload/"
    </IfModule>
    <IfModule mod_rewrite.c>
      RewriteEngine on
      RewriteCond %{REQUEST_METHOD} ^TRACE
      RewriteRule .* - [F]
    </IfModule>
    ErrorLog  logs/orddev.foo.com.au___443/ssl_error.log
    CustomLog logs/orddev.foo.com.au___443/ssl_access.log combinedio
    CustomLog logs/orddev.foo.com.au___443/ssl_request.log ssl
    LogLevel warn
    SSLEngine on
    SSLProtocol all -SSLv2
    SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:!SSLv2
    SSLCertificateFile /etc/pki/tls/certs/orddev.foo.com.au.crt
    SSLCertificateKeyFile /etc/pki/tls/private/orddev.foo.com.au.key
    <Files ~ "\.(cgi|shtml|phtml|php|php3?)$">
      SSLOptions +StdEnvVars
    </Files>
    SetEnvIf User-Agent ".*MSIE.*" \
      nokeepalive ssl-unclean-shutdown \
      downgrade-1.0 force-response-1.0
  </VirtualHost>
</IfModule>

私が間違っていることは何か分かりますか?.htaccess が 404 ドキュメントを変更したかのように読み取られていることはわかっていますが、404 ドキュメントが適切にセットアップされていないというエラーが表示されます。

4

2 に答える 2

5

別のサーバーに切り替えた.htaccessファイルが機能していました。以前は正常に動作していましたが、切り替え後に動作しなくなりました。httpd.conf ファイルを構成することで問題を解決しました。

サーバーに SSH 接続し、httpd.conf ファイルを開いて編集します。

cd /etc/httpd/conf
sudo nano httpd.conf

「ディレクトリ」タグを見つけます。このように見えるはずです->

<Directory "/var/www/html">

AllowOverride Noneを置き換えます

AllowOverride All

再起動

sudo service httpd restart
于 2013-06-04T16:25:50.907 に答える
1

Apache が mod_rewrite をロードしていないようです。

httpd.conf を見つけて、「rewrite_module」を検索します。

その行が # で始まる場合 (コメントにする)、# を削除して apache を再起動します。

私の場合、行は次のとおりです。

LoadModule rewrite_module libexec/apache2/mod_rewrite.so

...しかし、YMMV。

于 2013-05-09T01:30:14.850 に答える