gpt4 book ai didi

apache - 从网站 URL 中删除 index.php

转载 作者:行者123 更新时间:2023-12-02 09:59:44 28 4
gpt4 key购买 nike

我正在使用 Kohana 框架(但我认为它与这个问题无关)并且可以像这样访问页面

http://www.example.com/articles/
http://www.example.com/index.php/articles/

现在,根据经验,我通常会尝试调整 .htaccess 以仅允许页面的一种方式进入,并默默地重定向其他常见方式。

本质上,在上面的第一个 URL 中,地址实际上在内部重定向到第二个示例。

我想要做的是强制任何第二类型的 URL 转换为第一类型的 URL。我通常对 .htaccess 不太有信心,我的第一次尝试是抛出一些意想不到的结果(例如有时无限循环)

这是我想到的

RewriteRule ^index\.php/(.*) $1 [NC,L,R=301]

谁能告诉我我做错了什么,如果你也遇到这个问题,你是如何解决的?

编辑

我决定发布我的整个 .htaccess,以便可以检查我的所有重定向。

# Turn on URL rewriting
RewriteEngine On

# Installation directory
RewriteBase /~toberua/


# file not found page
ErrorDocument 404 /404/
ErrorDocument 403 /403/

# get people out of my directories
Options -Indexes

# default page to load
DirectoryIndex index.php

# add trailing slash if missing
RewriteRule ^(([a-z0-9\-]+/)*[a-z0-9\-]+)$ $1/ [NC,R=301,L]

# redirect /favicon.ico requests
RewriteCond %{REQUEST_URI} !^/images/layout/favicon\.ico [NC]
RewriteCond %{REQUEST_URI} favicon\.(gif|ico|png|jpe?g) [NC]
RewriteRule (.*) images/layout/favicon.ico [R=301,L]

# send /home back to TLD
RewriteRule home/ $1 [NC,R=301,L]

# ensure there is no /index.php in the address bar
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*index\.php\ HTTP/
RewriteRule ^(.*)index\.php$ $1 [R=301,L] # this was my attempt to stop /dir/index.php and make it simply /dir/

RewriteRule ^index\.php/(.*) $1 [NS,NC,L,R=301]

# Protect application and system files from being viewed
RewriteRule ^(application|modules|system) - [F,L]

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT,L]

最佳答案

试试这个:

RewriteRule ^index\.php/(.*) $1 [NS,NC,L,R=301]

您没有处理的是,所有请求都需要重写,并且当您进行重写时,它会生成一个子请求——该子请求也需要重写。因此,您最终将/articles 重写为/index.php/articles,然后在该问题的子请求中,将/index.php/articles 重写为/articles 并生成 301 重定向的新请求,如此往复。添加 NS 标志将使此规则不适用于子请求,我认为这应该可以解决您的问题,除非您还在/articles ->/index.php/articles 重写上执行 301 (但这将是疯狂的)。

关于apache - 从网站 URL 中删除 index.php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/905030/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com