gpt4 book ai didi

.htaccess - 仅当发生 404 时才使用 mod_rewrite

转载 作者:行者123 更新时间:2023-12-02 07:54:36 25 4
gpt4 key购买 nike

我正在使用 cms 将静态网站转换为一个。我将 cms 安装在公共(public)目录的子目录中。为了避免以丑陋的域名结束 ( http://example.com/cms/ ),有没有一种简单的方法使用 mod_rewrite 重写 http://example.com/ http://example.com/cms/ ... 同时确保如果请求不会以 404 结束,则没有重定向。

一个例子:

/
/cms/index.html
/cms/file.dat
/file.dat

如果用户请求/index.html,他们应该被重定向到/cms/index.html,但是如果他们请求/file.dat,他们不应该被重定向到/cms/file.dat,因为该文件存在于请求的位置

编辑感谢您的回答。

最佳答案

您可以使用 RewriteCond Directive检查是否存在与请求的 URL 对应的现有文件,如果没有则仅重写到您的 CMS。

这是一个简单的例子:

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php

如果不存在与请求的 URL 对应的现有文件,则将该请求重写为 index.php

您可能还想检查符号链接(symbolic link)和/或目录,顺便说一句...
例如,这里是 possibility that can be used when setting up a Zend Framework project :

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

(虽然是链接到ZF,但是很多项目应该没问题)

关于.htaccess - 仅当发生 404 时才使用 mod_rewrite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1582673/

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