如何将不存在的Joomla URL重定向到我们的404错误页面? [英] How do I get non-existing Joomla URLS redirected to our 404 Error Page?

查看:95
本文介绍了如何将不存在的Joomla URL重定向到我们的404错误页面?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

简要说明:任何以数字开头的友好搜索网址都会转到不应该存在的残破页面,而不是自定义404错误页面

Brief: Any search friendly URL that starts with a number goes to a broken page that shouldn't exist instead of custom 404 Error Page

详细信息:现有的任何部分网址&随机字符似乎返回的是残破的页面,而不是404页面。

Details: Any partial existing url & random characters seems to return a broken page and not the 404 page.

示例正确进入404错误页面的未退出网址:
http://www.shareandcare.org/asdasd http://www.shareandcare.org/a22sdasd

Example non-exiting urls that correctly goes to 404 Error page: http://www.shareandcare.org/asdasd or http://www.shareandcare.org/a22sdasd

示例应该转到404错误页面的不存在或部分存在的网址:
http:/ /www.shareandcare.org/17-progsdsadsad http://www.shareandcare.org/ 27-progrsdsads

Example non-existing or partially existing urls that SHOULD go to 404 Error page: http://www.shareandcare.org/17-progsdsadsad and http://www.shareandcare.org/27-progrsdsads

由于它们以数字开头,因此加载了我认为不存在的破碎页面。好像他们在寻找joomla ID,但即使如此,为什么它似乎也损坏了?

Because they start with a number they load a broken page that in my opinion doesn't exist. It's as if they are looking for a joomla id, but even so why would it appear broken?

# @package      Joomla
# @copyright    Copyright (C) 2005 - 2013 Open Source Matters. All rights reserved.
# @license      GNU General Public License version 2 or later; see LICENSE.txt
##

##
# READ THIS COMPLETELY IF YOU CHOOSE TO USE THIS FILE!
#
# The line just below this section: 'Options +FollowSymLinks' may cause problems
# with some server configurations.  It is required for use of mod_rewrite, but may already
# be set by your server administrator in a way that dissallows changing it in
# your .htaccess file.  If using it causes your server to error out, comment it out (add # to
# beginning of line), reload your site in your browser and test your sef url's.  If they work,
# it has been set by your server administrator and you do not need it set here.
##

## Can be commented out if causes errors, see notes above.
Options +FollowSymLinks

## Mod_rewrite in use.
RewriteEngine On

# This attempts to block the most common type of exploit `attempts` to Joomla!
#
# Block out any script trying to base64_encode data within the URL.
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
# Block out any script that includes a <script> tag in URL.
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL.
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL.
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Return 403 Forbidden header and show the content of the root homepage
RewriteRule .* index.php [F]
#
## End - Rewrite rules to block out some common exploits.

## Begin - Custom redirects
#
# If you need to redirect some pages, or set a canonical non-www to
# www redirect (or vice versa), place that code here. Ensure those
# redirects use the correct RewriteRule syntax and the [R=301,L] flags.
#
## End - Custom redirects

##
# Uncomment following line if your webserver's URL
# is not directly related to physical file paths.
# Update Your Joomla! Directory (just / for root).
##

RewriteBase /

## Begin - Joomla! core SEF Section.
#
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
#
# If the requested path and file is not /index.php and the request
# has not already been internally rewritten to the index.php script
RewriteCond %{REQUEST_URI} !^/index\.php
# and the request is for something within the component folder,
# or for the site root, or for an extensionless URL, or the
# requested URL ends with one of the listed extensions
RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?
|feed|pdf|vcf|raw))$ [NC]
# and the requested path and file doesn't directly match a physical file
RewriteCond %{REQUEST_FILENAME} !-f
# and the requested path and file doesn't directly match a physical folder
RewriteCond %{REQUEST_FILENAME} !-d
# internally rewrite the request to the index.php script
RewriteRule .* index.php [L]
#
## End - Joomla! core SEF Section.


推荐答案

如果将以下代码复制/粘贴到。 htaccess文件,对不存在的文件或文件夹的所有请求都将返回index.php文件的内容。

If you copy/paste the following code into a .htaccess file, all requests for non-existing files or folders will return the contents of your index.php file.

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ / [L,QSA]
</IfModule>

每行的含义如下:


  • RewriteEngine启用:启用运行时重写引擎。

  • RewriteCond%{REQUEST_FILENAME}!-f:重写将在
    处进行。请求的文件名不是常规文件,或者文件不存在

  • RewriteCond%{REQUEST_FILENAME}!-d:将进行
    的重写请求的文件名不是目录,或者目录不存在

  • RewriteRule ^(。*)$ / [L,QSA]:如果以上条件都匹配(请求的
    文件不是文件,不是目录,并且不存在)
    ,然后该URL将被重写为您网站的根目录。

  • L表示重写过程应在应用此规则后立即停止
    , QSA意味着必须将原始请求URL中的任何查询
    字符串附加到重写
    目标。

  • RewriteEngine on: Enable the runtime rewriting engine.
  • RewriteCond %{REQUEST_FILENAME} !-f: The rewriting will take place is the requested filename is not a regular file or if the file doesn't exist.
  • RewriteCond %{REQUEST_FILENAME} !-d: The rewriting will take place is the requested filename is not directory or if the directory doesn't exist.
  • RewriteRule ^(.*)$ / [L,QSA]: If the above conditions both match (the requested file isn't a file, isn't a directory, and doesn't exist) then the URL will be rewritten to the root of your website.
  • The "L" means that the rewriting process should stop immediately after this rule has been applied and the "QSA" means that any query string from the original request URL must be appended to the rewrite target.

这篇关于如何将不存在的Joomla URL重定向到我们的404错误页面?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆