如果网址仅包含字母或数字,则重定向

时间:2017-08-11 20:55:56

标签: php apache .htaccess redirect mod-rewrite

我有一个网站设置,用户可以在其中声明" / pages",例如
mywebsite.com/example1或mywebsite.com/example2。

如果用户输入的网址不存在,则显然会重定向到404错误页面。但是,我想要它,以便如果用户键入一个不存在的包含字母或数字(没有符号等)的URL,然后它将被重定向到页面我创建了说明" url可用!"。

我配置了一个.shtml页面,以便在输入有效的URL时显示:

<h1>available</h1>    
<div>mywebsite.com<!--#echo var="REQUEST_URI" --> is available.</div>

example1 example2

但是,我不知道如何设置&#34;有效性&#34;部分。如果输入的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错误页面,其中表示&#34; mywebsite.com /(...)可用&#34;但这会引起问题,因为它会说几乎任何可用的东西。我尝试使用RewriteRule ^(.*);(.*)$ /error.shtml [L,R=301]阻止某些字符,其中每个RewriteRule检测到url是否包含另一个符号并执行301重定向到我的自定义错误页面。但是,此代码无法重定向所有符号,例如,如果我将RewriteRule ^(.*)$(.*)$ /error.shtml [L,R=301]重定向到重定向网址中的美元符号的任何使用,则会给我一个服务器错误&#34; $&# 34;是一个保留字符。 (除非有一个我不知道的解决方法)!所以我改为采用这种方法,而不是阻止符号,只允许 允许字母和数字。

非常感谢帮助!并且需要!

0 个答案:

没有答案