jsw
jsw

Reputation: 13

Rewrite Rules just doesn't work

Settings in httpd.conf is correct for .htaccess

Here is the content of .htaccess:

RewriteEngine on

RewriteBase /  

RewriteCond %{REQUEST_URI} ^Minecraft(Skin|Cloak)s/

RewriteRule ^Minecraft(Skins|Cloaks)/([a-zA-Z_0-9]+)(?:.*) /$1/$2.png 

which I expected to get this result:

Input: /MinecraftSkins/u5er_n4me-skin-317982479812

Output: /Skins/u5er_n4me.png

Input: /MinecraftCloaks/u5er_n4me-cape-317982479812

Output: /Cloaks/u5er_n4me.png

But Nothing was happened, only a 404 returned and no rewrite working.

Is my Regexp wrong?

Log: [Mon Sep 08 17:39:30.089346 2014] [rewrite:trace2] [pid 5212:tid 1108] mod_rewrite.c(468): [client 192.168.1.1:57989] 192.168.1.1 - - [skins.jsw3286.info/sid#27866e0][rid#27dc240/initial] init rewrite engine with requested uri /MinecraftSkins/jsw-18947

[Mon Sep 08 17:39:30.089346 2014] [rewrite:trace1] [pid 5212:tid 1108] mod_rewrite.c(468): [client 192.168.1.1:57989] 192.168.1.1 - - [skins.jsw3286.info/sid#27866e0][rid#27dc240/initial] pass through /MinecraftSkins/jsw-18947

[Mon Sep 08 17:39:30.090346 2014] [rewrite:trace3] [pid 5212:tid 1108] mod_rewrite.c(468): [client 192.168.1.1:57989] 192.168.1.1 - - [skins.jsw3286.info/sid#27866e0][rid#27dc240/initial] [perdir F:/mcsrv/SkinStation/root/] strip per-dir prefix: F:/mcsrv/SkinStation/root/MinecraftSkins/jsw-18947 -> MinecraftSkins/jsw-18947

[Mon Sep 08 17:39:30.090346 2014] [rewrite:trace3] [pid 5212:tid 1108] mod_rewrite.c(468): [client 192.168.1.1:57989] 192.168.1.1 - - [skins.jsw3286.info/sid#27866e0][rid#27dc240/initial] [perdir F:/mcsrv/SkinStation/root/] applying pattern '^Minecraft(Skins|Cloaks)/([a-zA-Z_0-9]+)(?:.*)' to uri 'MinecraftSkins/jsw-18947'

[Mon Sep 08 17:39:30.090346 2014] [rewrite:trace1] [pid 5212:tid 1108] mod_rewrite.c(468): [client 192.168.1.1:57989] 192.168.1.1 - - [skins.jsw3286.info/sid#27866e0][rid#27dc240/initial] [perdir F:/mcsrv/SkinStation/root/] pass through F:/mcsrv/SkinStation/root/MinecraftSkins/jsw-18947

And then 404 is presented.

Upvotes: 1

Views: 113

Answers (1)

Justin Iurman
Justin Iurman

Reputation: 19026

Your RewriteCond does not pass because REQUEST_URI begins with a leading slash (/).
Also, your RewriteCond is useless in your case so you can remove it.

Use this code instead

RewriteEngine On
RewriteBase /

RewriteCond %{DOCUMENT_ROOT}/$1/$2\.png !-f
RewriteRule ^Minecraft(Skins|Cloaks)/([a-zA-Z_0-9]+) http://skins.minecraft.net/Minecraf$1/$2.png [R=301,L]

RewriteRule ^Minecraft(Skins|Cloaks)/([a-zA-Z_0-9]+) $1/$2.png [L]

Upvotes: 1

Related Questions