我希望在我的服务器中有如下名称:(因此,所有服务器设置和爬虫程序都是从。在文件列表中首先显示,然后在文件列表中显示我的网页文件。)
.favicon.ico
.htaccess
.robots.txt
.sitemap.xml
index.php
contact.php
字符串
下面是.htaccess的内容:
Redirect 301 "/robots.txt" "/.robots.txt"
Redirect 301 "/favicon.ico" "/.favicon.ico"
型
下面是文件“. robots.txt”的内容:
User-Agent: *
Sitemap: http://example.com/.sitemap.xml
Allow: https://example.com/index.php
Allow: https://example.com/contact.php
型
这样可以吗?一切都会正常运行吗?网站图标怎么样?这样可以吗?提前感谢!
1条答案
按热度按时间k4ymrczo1#
是的,您可以重命名
robots.txt
和favicon.ico
,但是,您应该将其实现为内部重写,而不是外部重定向(这会创建不必要的额外请求)。我也会考虑使用一个不同的字符前缀,而不是一个点,这通常表示一个“隐藏/保护”的文件(如.htaccess
),可能不会显示在FTP客户端默认情况下。在服务器配置中可能已经有了阻止访问点文件的指令。(也许可以使用@
,我将在下面的示例中使用它。您通常不会因为上述原因重命名
robots.txt
(和favicon.ico
)文件(只是为了影响目录中文件的顺序)。这可能会让其他开发人员感到困惑。但是,当您需要根据请求的元素(例如,请求的内容)有条件地提供不同的robots.txt
文件时,“重命名”robots.txt
文件是非常常见的。也许你有multiple domains being served from the same hosting account and you need differentrobots.txt
files或者也许你需要disallow crawling of some domains and allow others)。要重写请求,您需要使用mod_rewrite。举例来说:
字符串
它可以被“简化”为一个单一的规则,避免重复:
型
$1
是在前面的RewriteRule
* 模式 * 中捕获的URL路径的反向引用,即robots.txt
或favicon.ico
,具体取决于请求。对于用户代理(浏览器/搜索引擎机器人),“内部重写”是不可见的。就好像文件分别被称为
robots.txt
和favicon.ico
。但是,也要考虑阻止对这些@-文件的直接访问。将
@robots.txt
的请求重定向到robots.txt
。例如,下面的代码需要在上面的重写之前进行 *:型
对
REDIRECT_STATUS
环境变量的检查确保只处理来自客户端的直接请求,而不处理上述重写的内部重写请求。如果你对
sitemap.xml
做同样的事情(即all @-files),则规则可以简化,因为您只需要检查@
前缀,而不需要显式匹配文件名。举例来说:型
参考文件:
不重命名文件,而是移动其他(内容)文件
或者,与其在根目录中重命名这些文件,为什么不将所有内容(
.php
文件)放在一个子目录中(例如:/content
),并将根目录中所有对.php
文件的请求重写到该子目录?举例来说:型
前面的 condition(
RewriteCond
指令)在重写请求之前检查/content
子目录中的目标文件是否存在。然后,从可见URL中删除.php
扩展是一项简单的任务。例如,将上述规则替换为:型
robots.txt
型
这里不需要
Allow
指令(因为默认值为“allow”)。但是,Allow
(和Disallow
)指令采用根相对URL路径,而不是绝对URL。也就是说,它应该是/index.php
,而不是https://example.com/index.php
-后者不会做任何事情,因为它永远不会匹配。(此处还混合了http
和https
。)