开发者

question regarding specific mod_rewrite syntax

开发者 https://www.devze.com 2023-03-20 23:50 出处:网络
I know there are other questions that are similar to this.. but I\'m really struggling with mod_rewrite syntax so I could use some help.

I know there are other questions that are similar to this.. but I'm really struggling with mod_rewrite syntax so I could use some help.

Basically, what I am trying to do is have the following redirect occur:

domain.com/1/ redirect to domain.com/?id=$1 (also should work for www.domain.com)

What I hav开发者_运维技巧e so far (that isn't working):

RewriteEngine On
ReRewriteRule ^/([0-9])$ /?id=$1


A few issues.

First is terminology: if you want when a user types domain.com/1/ that the request is served by index.php?id=1, then you are rewriting /1/ to index.php?id=1, not the other way around as you said.

Second, simple typo: RewriteRule, not ReRewriteRule.

Second, [0-9] is the right way to match a number, but it'll only match a single digit. If you want to handle /13 then you should match one or more instances [0-9] by writing [0-9]+.

Third, the target of your rule should be the file you want to serve. / is not a file or an absolute URL, write out the index.php if that's what you mean.

Third, you say you want to handle /1/, but your rule says that the matched request must end in a number, not a slash. If you want to accept the slash whether it's there or not, put that in the rule.

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

Does that work?


You've three issues:

RewriteRule is misspelt as point out by Michael, you need to worry about the trailing slash, and you need to stop processing rules when you've found the match:

RewriteRule ^/(\d+)/?$ /?id=$1 [L]


You have misspelled RewriteRule. Otherwise, I think your syntax looks correct.

RewriteEngine On
ReRewriteRule ^/([A-Za-z0-9]+)$ /?id=$1
--^^^---------

Actually, you should probably remove the /:

RewriteEngine On
RewriteRule ^([A-Za-z0-9$_.+!*'(),-]+)$ /?id=$1
      ------^^^---------

EDIT Added the +. Look at all the answers here. You need a composite of them., including the + and the [L] in addition to what I have here.

EDIT2 Also edited to include alpha characters in the id.

EDIT3 Added special characters to regex. These should be valid in a URL, but it's unusual to find them there.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号