localhost/projects/project1/page/x
の代わりにlocalhost/projects/project1/index.php?page=x
を使用したいと思います。しかし、RewriteRuleを使用して.htaccessのURLをリダイレクトした後、404エラーページが返されました。
ここに私のコードがあります:
ErrorDocument 404 /projects/project1/pagenotfound.php
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^projects/project1/page/([0-9]*)$ /projects/project1/index.php?page=$1 [L,QSA,NC]
ErrorDocument 404 /projects/project1/pagenotfound.php
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^page/([0-9]*)$ /projects/project1/index.php?page=$1 [L,QSA,NC]
私の.htaccessはindex.phpと同じディレクトリにあるため、
localhost/projects/project1/.htaccess
それが問題です。あるいは、あなたの見方によっては、RewriteRule
パターンが問題です。
.htaccess(ディレクトリごと)ファイルでは、パターンごとに一致する前に、ディレクトリごとのプレフィックスが最初にURLから削除されます。したがって、.htaccessファイルが/projects/project1/.htaccess
にある場合、RewriteRule
パターンは最初から/projects/project1/
を除外する必要があります(同じ理由で、/
プレフィックスをドキュメントルートにあるときのパターン)。言い換えると...
RewriteRule ^page/([0-9]*)$ /projects/project1/index.php?page=$1 [L,QSA,NC]
または、.htaccessファイルをドキュメントルートに移動します。