如何重写URL并返回原始链接的“404”?

时间:2017-09-07 15:01:40

标签: php apache .htaccess web url-rewriting

我使用htdocs文件夹中的一些文件创建了我的网站,例如:.htaccessweb.php ...过去,我为我的网站使用了旧的网址结构:{{ 1}}。然后,我使用了一个新的old.php?id=12,使用这个简单的new/12

.htaccess

现在,我不希望任何用户可以使用旧的URL结构访问我的网站。你能告诉我:如何重写URL并返回RewriteEngine On RewriteRule "^new/([0-9]+)/?$" "/old.php?$1" 原始链接?

2 个答案:

答案 0 :(得分:1)

试试这个:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule ^new/(\d+)*$ ./old.php?id=$1

答案 1 :(得分:1)

最佳解决方案,尤其是SEO,是制作重定向301:

RewriteEngine on

# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} \s/+old\.php\?id=(\d+) [NC]
RewriteRule ^ /new/%1? [R=301,L,NE]

# internal forward from pretty URL to actual one
RewriteRule ^new/(\d+)/?$ /old.php?id=$1 [L,QSA,NC]

为了毫不费力地获得真正的404,最简单的方法是将隐藏的页面名称更改为new.php(也在htaccess中)并删除old.php页面。