首页 > 解决方案 > 如果目录后面有东西,但不是目录本身,则重定向

问题描述

我想重定向 URI 后面的内容,但我一直遇到麻烦。

基本上,我想/from/here/1234重定向到/to/there.php?id=1234. 但是,只有在 URI 使用我的模式之后的某些内容(例如/form/here/1234/edit.

这是“工作”规则:

RewriteEngine on

RewriteCond "%{REQUEST_URI}" !-d
RewriteRule ^from/here/(.*)/edit/?$ /to/there.php?id=$1

我已经尝试过使用和不使用RewriteCond, 并进行以下更改:

我必须在这里遗漏一些简单/基本的东西,因为我一直在努力自己寻找任何有用的东西(这几乎总是意味着我愚蠢地错过了一些“掌上脸”/“头墙”的东西)。我对编辑 .htaccess 文件不是很熟悉,所以这没有帮助。

TL;DR - 我想重定向斜线后面的内容,但前提是它后面确实有东西。前进/from/here/1234,但不是/from/here/from/here/

标签: regexapache.htaccess

解决方案


我知道......正则表达式太包容了。将规则更改为

RewriteRule ^from/here/([a-z0-9\-]+)/?$ /to/here.php?id=$1 [NC]

一切都很好。


推荐阅读