StudioTime
StudioTime

Reputation: 23989

Rewrite rules overriding

I have two rewrite rules which, in what ever order I add them, fail to work together

The first one takes a name from url e.g.

http://myUrl.com/JohnSmith

and forwards it to:

http://myUrl.com/pages/gf_profile.html?user=JohnSmith

Code is:

RewriteEngine On
RewriteBase /
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([^\.]+)$ /pages/gf_profile.html?user=$1 [NC,L]

On it's own it works fine. The second one is wordpress, I have urls e.g.:

http://myUrl.com/blog/my-blog-post

And it uses:

RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]

With the second section in, when I try the first URL it thinks it's a blog title and therefore cannot find it.

Is there a way to use them both?

Upvotes: 0

Views: 36

Answers (2)

StudioTime
StudioTime

Reputation: 23989

Answer:

Thanks to @anubhava - I simply created a .htaccess file in the /blog/ folder with the following on and all works perfectly now.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>

I'm not sure why wordpress doesn't add this on install, it should IMHO - hopefully this might help someone who has a similar issue down the line.

Upvotes: 0

Jon Lin
Jon Lin

Reputation: 143906

Try:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/blog/
RewriteRule ^([^\.]+)$ /pages/gf_profile.html?user=$1 [NC,L]

And I assume your other rules are in the /blog/ directory (otherwise it doesn't look like it'll work right).

Upvotes: 1

Related Questions