【问题标题】:Htaccess redirect url with database id带有数据库 ID 的 Htaccess 重定向 url
【发布时间】:2018-08-27 04:12:20
【问题描述】:

我想为我的数据库中的每个 NUMERO 重定向这个 url:

https://www.website.com/post.php?id=NUMERO

https://www.website.com/NUMERO

其中 NUMERO 是我的 sql 数据库中单元格的 ID。例如:

https://www.website.com/post.php?id=7

https://www.website.com/7

要做重定向,我在我的 htaccess 文件中添加了这一行:

RewriteRule ^/([0-9]+)/?$ post.php?id=$1 [NC,L] 

但它不起作用,我不明白为什么。

谁能帮帮我?

【问题讨论】:

  • ^/ 永远不会在 .htaccess 文件中匹配。删除斜线。
  • 不管怎样都不行!
  • 好的,但是你得到了什么? 404?它是您的完整 .htaccess 吗? Apache 是否读取了您的 .htaccess(AllowOverride 不重视 None)?
  • 不,我什么也没得到,是的,我的 .htaccess 已满,并以:RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteCond %{HTTP_HOST} ^www. RewriteCond %{HTTPS} 关闭 RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE] https 工作正常,所以 apache 读取了我的 .htaccess。
  • “我什么都没有” = 空白页?如果是这样,是因为 PHP 致命错误导致的 500?

标签: mysql apache .htaccess web url-redirection


【解决方案1】:
# redirect "old" URL (/post.php?id=NUMERO to /NUMERO)
RewriteCond %{ENV:REDIRECT_STATUS} =""
RewriteCond %{QUERY_STRING} (?:^|&)id=(\d+)(?:&|$)
RewriteRule ^post\.php$ %1 [L,R=permanent]

# rewrite /NUMERO to /post.php?id=NUMERO
RewriteRule ^\d+$ post.php?id=$0 [L,QSA]

您可以将R=permanent 替换为R=404R=410 以使post.php 不再存在而不是重定向它。

【讨论】:

    猜你喜欢
    • 2022-07-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-29
    • 2017-01-29
    • 2014-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多