Dom
Dom

Reputation: 878

Keep getting 500 Internal Server Error URL Rewrite

I have something like the following page:

www.domain.com/games/?puzzle=value

I'd like for it to show up as

www.domain.com/games/value

Here is the rewrite I wrote for forwarding to the original domain that causes a 500 Internal Server Error:

#forward games/value to games/?puzzle=value
RewriteRule ^games/(.+?)/?$ /games/index.php?puzzle=$1 [L,QSA]

Would someone help me solve my issue, I'm really bad at rewrites.

EDIT:

I'm currently using the following to allow parameters from foo on my main page.

# Internally forward /value to /index.php?foo=value
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?)/?$ /index.php?foo=$1 [L,QSA]

If I remove that then the following will work for what I want, but I need both instances to work.

#forward games/value to games/?puzzle=value
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^games/(.+?)/?$ /games/index.php?puzzle=$1 [L,QSA]

Upvotes: 1

Views: 165

Answers (1)

anubhava
anubhava

Reputation: 786289

That is due to looping since URL after rewrite is also matching your pattern ^games/(.+?)/?$.

You need to exclude real files/directories from this rewrite rule:

#forward games/value to games/?puzzle=value
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^games/(.+?)/?$ /games/index.php?puzzle=$1 [L,QSA]

# Internally forward /value to /index.php?foo=value
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?)/?$ /index.php?foo=$1 [L,QSA]

Upvotes: 1

Related Questions