1

当我导航到 example.com/books (books.php) 时,页面加载了预期的脚本,但是当我添加斜杠 example.com/books/ 时,页面没有加载所需的脚本,我需要更改为确保它在有和没有斜线的情况下加载?

这是我的 .htaccess 的内容:

RewriteEngine on
RewriteRule \.(css|jpe?g|gif|png|js|ico|svg)$ - [L]
RewriteCond %{REQUEST_URI} "/folder/" [OR]
RewriteCond %{REQUEST_URI} "/folder2/" [OR]
RewriteCond %{REQUEST_URI} "/folder3/"
RewriteRule (.*) $1 [L]
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php
RewriteRule ^([A-Za-z0-9-]+)/?$ book.php?slug=$1 [NC,L]
RewriteRule ^([A-Za-z0-9-]+)/(.*)/? read.php?slug=$1&cslug=$2 [NC,L]
4

1 回答 1

1

更改此部分:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php

以便它执行额外的检查以删除任何尾部斜杠。这

RewriteCond %{REQUEST_FILENAME}\.php -f

如果您有 URI,则条件将失败,/book/因为/book/.php不存在。

尝试:

RewriteCond %{REQUEST_FILENAME} !-d  
RewriteCond %{REQUEST_URI} ^/(.*?)/?$
RewriteCond %{DOCUMENT_ROOT}/%1.php -f
RewriteRule ^(.*?)/?$ /$1.php [L]
于 2013-11-14T22:50:42.553 回答