1

我正在尝试做虚荣网址。

我希望这个http://mydomain.com/series/profile.php?profile_id=751130015变成这样

http://mydomain.com/series/751130015

我尝试在目录上创建一个新文件“.htaccess”并添加以下代码:

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

但是,当我尝试访问时仍然出现错误

http://mydomain.com/series/751130015

我错过了什么吗?

我得到的错误是:

找不到对象!

在此服务器上找不到请求的 URL。如果您手动输入了 URL,请检查您的拼写并重试。

如果您认为这是服务器错误,请联系网站管理员。

错误 404

4

1 回答 1

0
RewriteEngine On
RewriteRule ^series/([0-9]+)$ /series/profile.php?profile_id=$1 [L]

解释:

任何以“系列”开头 (^)然后是破折号 (/)后跟数字 ( ([0-9]+) ) 的内容 - 还要记住这些数字作为第一个变量 "$1"并最终结束 ($)将被重定向到 /series/profile.php?profile_id= $1

所以http://mydomain.com/series/751130015

将被重定向到http://mydomain.com/series/profile.php?profile_id=751130015

更新:反过来:

RewriteEngine On
RewriteCond %{REQUEST_URI}  ^/series/profile\.php$
RewriteCond %{QUERY_STRING} ^profile_id=([0-9]*)$
RewriteRule ^(.*)$ http://mydomain.com/series/%1? [R=301,L]

解释(第一个条件)如果 /series/profile.php 被调用(第二个条件)参数以“profile_id =”开头,然后是数字,然后像这样进行重写:转到http://mydomain.com/series/并在末尾添加任何数字并停在那里(?) -我们故意停在那里以避免追加查询字符串以重写结果。通知访问者这是一个状态为 301 的 PERMANENT REDIRECT。然后终止 htaccess 执行(L)

所以http://mydomain.com/series/profile.php?profile_id=751130015将重定向(R=301 - PERMANENT REDIRECT)到http://mydomain.com/series/751130015

(您可以使用 R=302 进行临时重定向)

于 2013-05-28T09:10:07.570 回答