- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有下一个文件结构:
.htaccess
index.php
public/
├─ v1/
│ ├─ .htaccess
│ ├─ index.php
├─ index.php
我已将服务器级别的文档根目录设置为 public
子文件夹,以便将其从 URL 中删除。
我需要将 url 中包含 v1
的所有请求重定向到 v1/index.php
。
我的根.htaccess
:
RewriteEngine On
RewriteCond %{REQUEST_URI} !public/
RewriteRule (.*) /public/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC,L]
和v1/.htaccess
:
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} !-d [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ index.php [QSA,L]
预期行为:
不存在的 https://example.com/v1/test
页面应重定向到 https://example.com/v1/
。
我得到了什么:
Not Found
The requested URL was not found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
我很确定问题出在第二个 .htaccess
中。我还怀疑自定义文档根在这里也可能是一个问题。
最佳答案
尝试以下列方式获得您的根 .htaccess 一次,然后尝试一下并删除您的内部 .htaccess(尽管在本地系统中保留它的备份,但系统上没有它)。在测试 URL 之前清除浏览器缓存。
RewriteEngine ON
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{THE_REQUEST} !\s/public(?:/\S*)*\s [NC]
RewriteCond %{THE_REQUEST} !\s/v1(?:/\S*)*\s [NC]
RewriteRule ^(.*)/?$ /public/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} !\s/v1(?:/\S*)*\s [NC]
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteCond %{THE_REQUEST} !\s/v1/?\s [NC]
RewriteRule ^(v1)/.+/?$ /$1/? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^v1/?$ public/v1/index.php [QSA,L]
注意:将在早上添加详细的解释,因为对我来说太晚了。
关于apache - 设置自定义 DocumentRoot 时,将子文件夹中所有存在和不存在的页面和文件夹重定向到一页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74130540/
我想配置我的 apache 不同。现在,如果缺少 DocumentRoots 之一,则所有服务器都无法启动。这很烦人。。 有什么选择,如何忽略这个错误? 最佳答案 基于您的 DocumentRoot
如何在 apache 中进行以下设置? http://server/ABC/*应由 /var/www/ABC/* 提供服务 http://server/PQR/*应由 /var/www/PQR/* 提
我正在使用 Arch Linux 3.0-ARCH。我已经将 /etc/httpd/conf/httpd.conf 中的 DocumentRoot 从 /srv/http 更改为 /var/万维网。然
我在 ubuntu 上安装了 apache2,我将 DocumentRoot 值更改为我的工作文件夹。我的文件夹路径是 /home/user/My\Works/sites 所以我将我的 Documen
我正在尝试查找对 /var/www/html 的引用仍然存在于我的 Apache 配置中。当我运行 apache2ctl -S它说Main DocumentRoot: "/var/www/html"
我在我的服务器上设置了 mercurial,但我不清楚事情应该如何。我正在寻找更多不同设置的示例,但也许我使用了错误的关键字。现在,只有少数开发人员,我不确定是否应该将 repo 作为 Documen
不要认为我的虚拟主机工作正常。这是我在 httpd.conf 中的内容……这是文件中的最后一件事: NameVirtualHost *:80 DocumentRoot /var/www/html/t
我正在构建一个 Zend 网站。该项目(本地)具有以下结构: /app /controllers /views /public /css /images /js .
我正在尝试将 httpd.conf 中的 DocumentRoot 从 /var/www 更改为 /var/www/shop 以便我可以组织起来。但即使我在重新启动 apache 和 httpd 后这
我使用 CentOS 5.8 获得了我的新 VPS 服务器,我还不能转移我的域,但我想通过 http://my-server-ip 访问我的站点,因为我使用的是 laravel框架 我需要将默认
NameVirtualHost *:80 ServerName tmp DocumentRoot "//192.168.1.25/www/" Options Indexes FollowSymLi
我的 .htaccess 文件中有 DocumentRoot/var/www/test 。这导致 apache 服务器给我一个 500 内部服务器错误。 错误日志文件显示: 警报] [客户端 127.
假设我有以下配置: # Server names, admins, logs etc... ProxyVia On ProxyRequests Off
我有下一个文件结构: .htaccess index.php public/ ├─ v1/ │ ├─ .htaccess │ ├─ index.php ├─ index.php 我已将服务器级别的
我有下一个文件结构: .htaccess index.php public/ ├─ v1/ │ ├─ .htaccess │ ├─ index.php ├─ index.php 我已将服务器级别的
我需要将一个子目录设置为 DocumentRoot,以便在 slim 框架上运行我的应用程序。有什么办法吗? 我尝试使用 htaccess 文件但没有成功:根: RewriteEngine On Re
我正在使用 EMF,并从 XSD 创建了我的 ecore。 我注意到编辑器保存的 XML 具有元素 DocumentRoot,它不是我原始 XSD 的一部分。我可以以某种方式不生成它,这样它就不会出现
我在/var/www/html 中安装了一个 codeigniter 项目。URL 应如下所示:http://example.com/clients/abc我正在运行 CentOS 和 Apache
我正在运行 ubuntu 18.4,安装了 digitalocean lamp,包括 quickstart ssl。我在服务器上的子目录 /var/www/html/moodle 中成功安装了 moo
我在这里拉扯我的头发。 我让 Apache 与两个不同的域一起运行,这些域使用 SNI 运行 SSL。 配置如下。如果我连接到 console.somedomain.com,它会将用户放在/var/w
我是一名优秀的程序员,十分优秀!