Php 查看域(.htaccess)中的子文件夹时出现问题
我在另一篇文章中读到了这一信息: 重写cond%{REQUEST_FILENAME}-fPhp 查看域(.htaccess)中的子文件夹时出现问题,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,我在另一篇文章中读到了这一信息: 重写cond%{REQUEST_FILENAME}-f 重写cond%{REQUEST_FILENAME}-d 。。。表示如果浏览器中的文件具有指定名称 不存在,或者浏览器中的目录不存在 执行下面的重写规则 因此,我尝试将其应用到.htaccess代码中,以删除.php扩展名和其他URL格式。代码如下: #REWRITE LINKS Options All +Indexes #REDIRECT ORIGINAL DOMAIN TO WWW RewriteEng
重写cond%{REQUEST_FILENAME}-d 。。。表示如果浏览器中的文件具有指定名称 不存在,或者浏览器中的目录不存在 执行下面的重写规则 因此,我尝试将其应用到.htaccess代码中,以删除.php扩展名和其他URL格式。代码如下:
#REWRITE LINKS
Options All +Indexes
#REDIRECT ORIGINAL DOMAIN TO WWW
RewriteEngine On
RewriteCond %{HTTP_HOST} ^noithateti.com [NC]
RewriteRule ^(.*)$ https://www.noithateti.com/$1 [R=301,NC]
#REWRITE LINKS
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^product-details/([a-zA-z0-9_-]+)/([0-9]+)$ product-details.php?title=$1&id=$2 [L]
RewriteRule ^products/([a-zA-z0-9_-]+)/([0-9]+)$ products.php?title=$1&id=$2 [L]
RewriteRule ^result.aspx result.php [L]
RewriteRule ^([^\.]+)$ $1.php [NC]
#RETURN 404 IF THE FILE CONTAINS .php
RewriteCond %{THE_REQUEST} "^[^ ]* .*?\.php[? ].*$"
RewriteRule .* - [R=404,L]
但是,我无法查看域的子文件夹。例如:我无法查看www.example.com/subfolder,因为我认为服务器混淆了文件和现有文件夹在逐行注释代码时,我发现问题出在这一行:
RewriteRule ^([^\.]+)$ $1.php [NC]
令人惊讶的是,这是我用来删除所有.php扩展名的代码行结合我读过的引文和代码,这就产生了矛盾。我不知道我应该改变什么来解决下面的问题。有人知道吗?请让我知道。谢谢 A
RewriteCond
仅适用于下一个RewriteRule
,而不适用于所有RewriteRule
您可以将规则设置为:
Options All +Indexes
RewriteEngine On
RewriteCond %{HTTP_HOST} ^noithateti\.com$ [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]
#RETURN 404 IF THE FILE CONTAINS .php
RewriteCond %{THE_REQUEST} "^[^ ]* .*?\.php[? ].*$"
RewriteRule ^ - [R=404,L]
#skip below rules for all existing files and directories
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^product-details/([\w-]+)/([0-9]+)/?$ product-details.php?title=$1&id=$2 [L,QSA,NC]
RewriteRule ^products/([\w-]+)/([0-9]+)/?$ products.php?title=$1&id=$2 [L,QSA,NC]
RewriteRule ^result\.aspx$ result.php [L,NC]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]
还要注意,在添加
.php
扩展名之前,在上一条规则中使用了RewriteCond%{REQUEST_FILENAME}.php-f
,以检查是否存在相应的.php
文件。谢谢,让我看看。我从你的回答中学到了一些东西