Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.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-尾部斜杠url_Php_.htaccess_Mod Rewrite_Url Rewriting - Fatal编程技术网

Php htaccess-尾部斜杠url

Php htaccess-尾部斜杠url,php,.htaccess,mod-rewrite,url-rewriting,Php,.htaccess,Mod Rewrite,Url Rewriting,您好,我有以下问题:我有一些页面(包括php),我像这样加载它们 http://www.domain.com/news/ 它们工作得很好。但是如果我去掉后面的斜杠 http://www.domain.com/news 这种情况会发生->http://www.domain.com/news/?page=news&request= 以下是我的访问规则: RewriteEngine on <IfModule mod_gzip.c> mod_gzip_on Yes

您好,我有以下问题:我有一些页面(包括php),我像这样加载它们

http://www.domain.com/news/
它们工作得很好。但是如果我去掉后面的斜杠

http://www.domain.com/news
这种情况会发生->
http://www.domain.com/news/?page=news&request=

以下是我的访问规则:

RewriteEngine on

<IfModule mod_gzip.c>
    mod_gzip_on       Yes
    mod_gzip_dechunk  Yes
    mod_gzip_item_include file      \.(html?|txt|css|js|php|pl|jpg|png|gif)$
    mod_gzip_item_include handler   ^cgi-script$
    mod_gzip_item_include mime      ^text/.*
    mod_gzip_item_include mime      ^application/x-javascript.*
    mod_gzip_item_exclude mime      ^image/.*
    mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</IfModule>




Options -Indexes
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)(.*)$ /index.php?page=$1&request=$2
重新编写引擎打开
mod_gzip_on Yes
是的
mod|gzip|item|u include file\(html?| txt | css | js | php | pl | jpg | png | gif)$
mod_gzip_item_包含处理程序^cgi脚本$
mod_gzip_项目包括mime^text/*
mod_gzip_item_包括mime^application/x-javascript*
mod_gzip_项_排除mime^image/*
mod_gzip_item_排除rspheader^内容编码:.*gzip*
选项-索引
重写cond%{REQUEST_FILENAME}-F
#重写cond%{REQUEST_FILENAME}-D
重写规则^([^/]*)(.*)$/index.php?页面=$1,请求=$2

顺便说一句,因为我在根文档中也有一个新闻文件夹,所以可以使用它吗?

是的,这是因为您在根文档中有一个
news/
文件夹。您的重写条件是查找任何不是文件(即
!-f
)或目录(
!-d
)的内容。尝试重命名根目录中的
news/
目录

如果必须,您可以通过执行以下操作强制
domain.com/news
重写到
domain.com/news/

RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://domain.com/$1/ [L,R=301]

这是一个mod_dir问题。当它认为某个URL映射到某个目录(即使后来决定不映射)时,它会重定向浏览器,以确保在末尾追加一个尾随斜杠

与另一个答案一样,您可以关闭
DirectorySlash
,或者通过mod_rewrite确保所有受影响的URL都通过尾部斜杠重定向(以便重写和重定向发生在同一模块中):

  • 通过包含
    目录slash off
    关闭mod_dir。这使得mod_dir不会重定向浏览器,但是。您可以在htaccess文件中添加该指令

  • 在mod_rewrite中处理尾部斜杠:

    RewriteEngine On
    Options -MultiViews
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !/$
    RewriteRule ^(.*)$ /$1/ [L,R=301]
    

  • 如果您访问
    domain.com/news/
    ,您希望得到什么结果?是的,目录是问题所在,谢谢:)