HackerGK
HackerGK

Reputation: 370

URL redirection in Wordpress manually by editing .htaccess file

please help me to fix my one of wordpress problem with URL redirecting in PHP.

This is my original wordpress htaccess file.

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

I want to create custom URL redirection here. For ex., I want to redirect pages,

http://example.com/b/1    >     http://example.com/b?n=1
http://example.com/b/2    >     http://example.com/b?n=2

i am using directory URL type (displaying URLs as directories without extensions) SEO options in wordpress settings.

inside of http://example.com/b page, I have included another php file using ‘include(‘z.php’);’ command. Z.php is reading URL parameter comes from ‘/?n=1’ through redirected URL. I tried below solution, but no luck..

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteRule ^b/([^/]*)$ /b/?n=$1 

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

Appreciate any of help.

EDIT

wordpress header file can read the translated parameters. i checked that by displaying GET parameter 'n' in title. but it shows file not found for http://example.com/b/

i verified that, by editing http://example.com/b/ page content. non of page content displaying after rewriting.

Any help appreciated

EDIT

URL may have characters in parameter as below.

http://example.com/b/abc_1    >     http://example.com/b?n=abc_1
http://example.com/b/aa_2    >     http://example.com/b?n=aa_2

Thanks for Helping

Upvotes: 0

Views: 1896

Answers (5)

HackerGK
HackerGK

Reputation: 370

I found the word press related solution for this question.

in word press all the requests are heading to index.php automatically. if we create custom rewrite to another page, that request not going through index.php. that makes wordpress unidentified request and wordpress will return page not found message.

becasue of that, we have to redirect custom rewrite to index.php instead of permalink.

i used

RewriteRule ^b/([^/]*)$ index.php?page_id=4&n=$1

this rule redirected all requests matched with rule to index page. (my page ID for /b/ is 4) this worked successfully for me.

other solutions above worked for non wordpress situations. but i found wordpress behavior as i explained.

appreciates who tried to answer.

Upvotes: 0

Attila Fulop
Attila Fulop

Reputation: 7011

If you want http://example.com/b/abc_1 to work, the abc_1 part must match the slug of a wordpress post.

Additionally you have to change the settings->permalink structure to match either postname or a custom structure like /b/%postname%.

enter image description here

enter image description here

enter image description here

Upvotes: 1

Attila Fulop
Attila Fulop

Reputation: 7011

At first sight it seems to me that it should be

RewriteRule ^b/([^/]*)$ /?p=$1

Wordpress doesn't know what to do with the url /b?n=X.

Upvotes: 1

Jinesh Gandhi
Jinesh Gandhi

Reputation: 77

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteRule ^b/([^/]*)$ /b/?n=$1 

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
#add below line
RewriteRule ^b/([0-9]+)/$ http://example.com/b?n=$1 [L]
</IfModule>    

Upvotes: 0

Ravi Patel
Ravi Patel

Reputation: 5211

http://example.com/b/1

to

http://example.com/b?n=1

Using this

RewriteRule ^b/([0-9]+)/?$ b?n=$1 [NC,L]


<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^b/([0-9]+)/?$ b?n=$1 [NC,L]
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>

enter image description here enter image description here Test hear

More info

Upvotes: 0

Related Questions