Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
628 views
in Technique[技术] by (71.8m points)

.htaccess RewriteRule not working in subdirectory

I'm programming the new version of my website and I'm trying to get .htaccess to rewrite properly. My new site is stored here:

www.example.com/storage/new/

I need to rewrite these URLs:

www.example.com/storage/new/welcome/   -> index.php?action=welcome
www.example.com/storage/new/page/name/ -> index.php?action=page&url=name
www.example.com/storage/new/post/name/ -> index.php?action=post&url=name

This is my .htaccess file:

RewriteEngine On

RewriteRule ^/welcome/$ index.php?action=welcome [L]
RewriteRule ^/page/([a-zA-Z0-9]+)/$ index.php?action=page&url=$1 [L]
RewriteRule ^/post/([a-zA-Z0-9]+)/$ index.php?action=post&url=$1 [L]

It does not work, however; all results in a 404 Not Found. I've tried everything, even typing out www.example.com/storage/new/ in lieu of ^. I have another .htaccess in the server root (www.example.com) that looks like this:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

I can't imagine how that would affect www.example.com/storage/new/ but you never know. Can anyone help me with this?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

I had to e-mail my server's administrator for help and it turns out that .htaccess treats its own path as root; I simply removed the first / before the ^ in each rule. My final .htaccess file looks like this:

RewriteEngine On

RewriteRule ^welcome/$ index.php?action=welcome [L,QSA]
RewriteRule ^page/(.*)/$ index.php?action=page&url=$1 [L,QSA]
RewriteRule ^post/(.*)/$ index.php?action=post&url=$1 [L,QSA]

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...