gpt4 book ai didi

php - Apache,如何处理未知的 php 文件,如标准 URL?

转载 作者:行者123 更新时间:2023-12-04 18:18:05 26 4
gpt4 key购买 nike

我有一个 Symfony 网站,我在其中重命名了主入口点,因此“index.php”无法访问,也无法被搜索引擎索引。它运作良好。但是,当我尝试访问此文件时,我得到一个 404 文件未找到,此 404 页面由 Apache 而不是由应用程序处理,它是标准的 404 页面:

Not Found
The requested URL was not found on this server.

我想要 之类的 URL/index.php (实际上是*.php)由 Symfony 应用程序处理,以显示具有良好布局的自定义错误页面。我的虚拟主机看起来像这样,我尝试添加“目录索引”指令但没有成功。
# configuration/vhosts/prod/mywebsite.com-le-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName www.mywebsite.com
DocumentRoot /var/www-protected/mywebsite.com/public

<Directory /var/www-protected/mywebsite.com/public>
AllowOverride All
Require all granted
FallbackResource /my-secret-entry-point.php
</Directory>

RedirectMatch 404 /\.git

ErrorLog /var/log/apache2/mywebsite.com_error.log
CustomLog /var/log/apache2/mywebsite.com_access.log combined

RewriteEngine on
RewriteCond %{SERVER_NAME} =mywebsite.com
RewriteRule ^ https://www.%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

SSLCertificateFile /etc/letsencrypt/live/www.mywebsite.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.mywebsite.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

最佳答案

这可以通过 mod_rewrite 来完成, 回复 301 :

Options +FollowSymLinks
DirectoryIndex index.php

RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} ^.*/index\.php
RewriteRule ^(.*)index.php$ /$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

默认错误文档可用于将错误代码发送到 PHP:
ErrorDocument 404 https://mywebsite.com/error/page/404
ErrorDocument 500 https://mywebsite.com/error/page/500

然后仍然可以发送任何内容 header()一个人想要 - 或者只是显示一个具有相同标题的页面。

关于php - Apache,如何处理未知的 php 文件,如标准 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59921221/

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