重定向如果URL只包含字母或数字
我有一个网站设置,用户可以声称“/页”,如
mywebsite.com/example1或mywebsite.com/example2。重定向如果URL只包含字母或数字
如果用户键入一个不存在的URL,它显然会重定向到一个404错误页面。但是,我希望如果用户输入一个不存在的包含的网址只是字母或数字(无符号或类似),然后,它将被重定向到我创建的页面,指出“url available!”。 。
我配置了一个这样的.shtml页面,以便输入一个有效的URL时,它显示了这一点:
<h1>available</h1>
<div>mywebsite.com<!--#echo var="REQUEST_URI" --> is available.</div>
不过,我不知道如何设置了“有效性“部分。我希望它只显示这个页面,如果输入的URL只包含数字或字母,没有符号。换句话说,
mywebsite.com/@user goes to 404 error page
mywebsite.com/u$er goes to 404 error page
mywebsite.com/user_ goes to 404 error page
mywebsite.com/user redirects to my custom page
mywebsite.com/user123 redirects to my custom page
mywebsite.com/123 redirects to my custom page
我现在有它设置在404错误页面是一个指出“mywebsite.com /(...)可用”,但是这会导致问题,因为它会说几乎任何东西都可用。我曾尝试使用RewriteRule ^(.*);(.*)$ /error.shtml [L,R=301]
阻止某些字符,其中每个RewriteRule检测url是否包含另一个符号,并将301重定向到我的自定义错误页面。但是,此代码不能重定向所有符号,例如,如果我把RewriteRule ^(.*)$(.*)$ /error.shtml [L,R=301]
重定向到URL中美元符号的任何用途,它会给我一个服务器错误,因为“$”是保留字符。 (除非有我不知道的解决方法)!所以我反而采用这种方法,而不是阻止符号,只是只有允许字母和数字。
非常感谢帮助!需要!
使用下列规则.htaccess文件:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^[a-zA-Z0-9\._]+$ custom.page [L]
如果某样东西存在,被担任了正常。如果它不存在,并且当前目录的请求uri部分只包含字母数字字符,它会转到custom.page。如果它包含其他内容,则会进入默认的404页面。
这是我会怎么做:
#If there is no file match
RewriteCond %{REQUEST_FILENAME} !-f
#Or a directory match
RewriteCond %{REQUEST_FILENAME} !-d
#Redirect alphanumeric strings to your custom page
RewriteRule ^[a-zA-Z0-9_.]+$ /my/custom/page [R=301,L]
#If there are symbols, send to 404
RewriteRule .* /error.shtml [R=301,L]
完美的作品!非常感谢! – Cris
Hi @Peter有没有方法可以包含句点和下划线? – Cris
@Cris是的,现在它也可以使用句点和下划线 –