【问题标题】:RewriteRule Slash Single RedirectRewriteRule 斜线单重定向
【发布时间】:2015-09-30 02:39:35
【问题描述】:

我正在尝试为我的 v2.2 api.php 文件创建一个新的重定向。所需的链接是:website.com/api/v2.2/ 但如果我使用 _ 而不是 /,则重写才有效:

website.com/api_v2.2/(工作):

RewriteRule ^api_v2.2/?$ /api.php [NC,QSA,L]

website.com/api/v2.2/(不工作):

RewriteRule ^api/v2.2/?$ /api.php [NC,QSA,L]

有什么想法吗? 我也尝试过这些行,但没有任何效果:

RewriteRule ^api\/v2.2/?$ /api.php [NC,QSA,L]

RewriteRule ^(api)/v2.2$ api.php [QSA,NC,L]

【问题讨论】:

标签: php apache .htaccess mod-rewrite


【解决方案1】:

您是否尝试过转义点和斜线?

RewriteRule ^api\/v2\.2\/?$ /api.php [NC,L]

点在这里可能会引起问题,因为它在正则表达式(source)中表示“任何字符”。此外,我认为您在这里不需要QSA 标志。

【讨论】:

  • 404 错误:/ /v2.2/ 工作正常,但 api/v2.2/ 没有:/
  • 嗯,它在本地测试时有效,website.com/api/v2.2/ 重定向到website.com/api.php,所以你的.htaccess 的其余部分可能有问题。你能给我们看看整个文件吗?
  • 我只尝试过:RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d #API RewriteRule ^api\/v2\.2\/?$ /api.php [NC,L]
  • 是的,效果很好。你的问题在别处。您网站的目录结构是什么?你检查过文件权限吗?或者你的这个虚拟主机的 apache conf?
  • 带下划线,工作正常: website.com/api_v2.2/ (WORKS): RewriteRule ^api_v2.2/?$ /api.php [NC,QSA,L]
【解决方案2】:

我已将 website.com/api.php 文件移至 website.com/api/api.php 新的 .htaccess url 重写规则是:

RewriteRule ^api/v2.2/?$ /api/api.php [NC,L]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-08
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    相关资源
    最近更新 更多