Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 查看域(.htaccess)中的子文件夹时出现问题_Php_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

Php 查看域(.htaccess)中的子文件夹时出现问题

Php 查看域(.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}-f
重写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
文件。

谢谢,让我看看。我从你的回答中学到了一些东西