.htaccess 404错误提示404错误提示

w41d8nur  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(204)

这是我在stackoverflow上的第一个问题,因为过去我总是能找到一个问题完美地描述我的问题。2但是现在他们不能做到这一点,所以我决定自己寻求帮助。
我的目标是显示配置文件,但URL不应该看起来像“/profile/show-profile.php?user=admin”,而应该是“/profile/admin”。
所以在谷歌上查了一下,发现URL重写可能很有用,通过编辑.htaccess文件。
问题是,它不起作用。我已经在我的.htaccess中有一些东西(重定向到https和404页“/pagenotfound.php”),似乎它们不能结合使用。

# https redirecting

RewriteEngine On
RewriteCond %{SERVER_PORT} !=443
RewriteRule ^(.*)$ https://int-politics.com/$1 [R=301]`

# 404 page

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /pagenotfound.php
ErrorDocument 404 /pagenotfound.php

# URL REWRITING

RewriteEngine On
RewriteBase /profile/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ show-profile.php?user=$1

当我添加URL重写部分时,404-Page不再工作了。每个不存在的站点只输出“/pagenotfound.php”(见image --〉)Not-existing site just outputs /pagenotfound.php instead of showing it.并且URL重写也不工作了。
如果你能帮我解决这个问题并告诉我出了什么问题,那就太好了。非常感谢!

ruarlubt

ruarlubt1#

您对RedirectBase的用法有误,在这样的分布式配置文件中应该只出现一次,实际上在本例中根本不需要......请查看文档了解详细信息:wwwhttps://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase
同样重要的是要理解如果应用了规则重写引擎就会循环,为什么使用LEND标志如此重要。
这可能就是您要寻找的内容:

RewriteEngine On
RewriteBase /

# https redirecting
RewriteCond %{SERVER_PORT} !=443
RewriteRule ^ https://int-politics.com%{REQUEST_URI} [R=301,END]

# profile rewriting
RewriteRule ^/?profile/(\w+)$ /profile/show-profile.php?user=$1 [END]

# 404 page
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ /pagenotfound.php [END]
ErrorDocument 404 /pagenotfound.php

最好是在中央http服务器的主机配置中实现这样的规则。如果您使用的是廉价的主机提供商),那么您可以使用 * 分布式 * 配置文件来代替,* 如果已经启用了对此类文件的考虑 *(有关AllowOverride指令的信息,请参见文档)。

相关问题