Vra

Ek is die ontwikkeling van 'n program wat plaaslik (onder Domain naam .dev ).

Om te werk met 'n vriendelike URL's, het ek opgestel my htaccess soos volg:

RewriteEngine on
# Externally redirect to add missing trailing slash
RewriteRule ^(([a-z0-9._\-]+/)*[a-z0-9_\-]+)$ http://example.com/$1/?%{QUERY_STRING}[NC,R,L]
RewriteRule ^about/$ about.php [NC,L]
RewriteRule ^issues/$ issues.php [NC,L]
RewriteRule ^issue/([a-z0-9_\-]+)/$ issue.php?slug=$1 [NC,L]

SetEnv PHP_VER 5
IndexIgnore *
Options +FollowSymLinks

Dit werk goed. Lastig, wanneer aanlyn gaan, is dit nie so 'n groot:

http://example.com/issue/my-slug/#23 terug nie AOO veranderlike. Hoekom?

Was dit nuttig?

Oplossing

My raaiskoot, gebaseer op vorige ondervinding is RewriteBase, waarskynlik omdat jou op 'n gedeelde bediener, of 'n ander nie-standaard opset.

RewriteEngine on

#Set base as doc root.
RewriteBase /

# Externally redirect to add missing trailing slash
RewriteRule ^(([a-z0-9._\-]+/)*[a-z0-9_\-]+)$ http://mydomain.eu/$1/?%{QUERY_STRING}[NC,R,L]
RewriteRule ^about/$ about.php [NC,L]
RewriteRule ^issues/$ issues.php [NC,L]
RewriteRule ^issue/([a-z0-9_\-]+)/$ issue.php?slug=$1 [NC,L]

SetEnv PHP_VER 5
IndexIgnore *
Options +FollowSymLinks

Ander wenke

Ek kan nie sien dat

RewriteRule ^(([a-z0-9._\-]+/)*[a-z0-9_\-]+)$ http://mydomain.eu/$1/?%{QUERY_STRING}[NC,R,L]

moet ooreenstem met die URL, maar dis die enigste een met die [R] vlag aan 'n eksterne aanstuur doen. Probeer kommentaar daardie lyn uit, om seker te maak daar is nie 'n ander deel van jou aansoek te doen die aanstuur. My raaiskoot is dat daar is.

Daar is 'n paar spasies ontbreek tussen die vervanging URL en die vlae. Jy kan ook jou eerste reël vereenvoudig soos volg:

RewriteRule ^([a-z0-9._-]+/)*[a-z0-9_-]+$ %{REQUEST_URI}/ [NC,R=301,L]
scroll top