0

ルート フォルダーの .htaccess がうまく機能しない理由を知りたいです。

.htaccess

RewriteEngine On 
RewriteRule ^([a-zA-Z0-9]+)(/[a-zA-Z0-9/]+)?$ /$1\.php$2 [L]

RewriteCond %{THE_REQUEST} ^GET\s/*pages/.*\.php [NC] 
RewriteRule ^([a-zA-Z0-9]+)(/[a-zA-Z0-9/]+)?$ /$1\.php$2 [L]

RewriteCond %{THE_REQUEST} ^GET\s/*debates/.*\.php [NC]
RewriteRule ^([a-zA-Z0-9]+)(/[a-zA-Z0-9/]+)?$ /$1\.php$2 [L]

/ (メイン フォルダー) 内のリンクは .php の隠蔽が機能していますが、/pages/ や /debates/ などのサブフォルダーでは、システムは書き換えルールを認識しません。メインフォルダーに隠されているように、両方のディレクトリに.phpを隠したい。

私は解決策を見つけました!

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+)$ $1.php [L,QSA]
4

1 に答える 1

0

これらのルールはすべて間違っているようです。何もしません。

RewriteCond %{THE_REQUEST} ^GET\s/*pages/.*\.php [NC] 
RewriteRule ^([a-zA-Z0-9]+)(/[a-zA-Z0-9/]+)?$ /$1\.php$2 [L]

RewriteCond %{THE_REQUEST} ^GET\s/*debates/.*\.php [NC]
RewriteRule ^([a-zA-Z0-9]+)(/[a-zA-Z0-9/]+)?$ /$1\.php$2 [L]

htaccess を次のように変更するだけです。

RewriteEngine On 
RewriteRule ^pages/([a-zA-Z0-9]+)(/[a-zA-Z0-9/]+)?$ /pages/$1\.php$2 [L]
RewriteRule ^debates/([a-zA-Z0-9]+)(/[a-zA-Z0-9/]+)?$ /debates/$1\.php$2 [L]
RewriteRule ^([a-zA-Z0-9]+)(/[a-zA-Z0-9/]+)?$ /$1\.php$2 [L]
于 2012-09-24T23:58:31.110 に答える