"Güzel URL" yeniden yazma?

4 Cevap php

Bu benim başarmak için çalışıyorum ne bir örnektir.

The original URL:
http://subdomain.domain.com/company.php?test=TES001

The rewritten URL:
http://subdomain.domain.com/company/AAA001

Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteRule company/(.*)/(.*)/$ /company.php?$1=$2
ErrorDocument 404 /

4 Cevap

İsterseniz /company.php?test=AAA001 /company/AAA001, bunu yapmak için yönlendirmek için:

RewriteCond %{QUERY_STRING} test=([A-Z]+[0-9]+)  
RewriteRule ^company.php /company/%1? [R]    

İsterseniz /company/AAA001 /company.php?test=AAA001, bu gibi yeniden yazılması gerekiyor:

RewriteRule company/([A-Z]+[0-9]+)$ /company.php?test=$1

Ben geriye tür, olması gerektiğini, RewriteRule yanlış bir şekilde yazılmış olduğunu düşünüyorum

RewriteRule company.php?test=([A-Z]+)([0-9]+) /company/AAA$2

Yani ilk ancak ben aslında böyle GET parametreleri maç emin değilim ... Bu için yeniden ne zaman maç ve desen vermek ...

Ben bir mod_rewrite uzman değilim, ama:

RewriteRule company/(.*)/(.*)/$ /company.php?$1=$2

gibi ifadeler maç olmamalıdır:

/company/foo/bar/

ve onları içine harita:

/company.php?foo=bar

Sadece, sizin URL var:

/company/foo

What are the Apache logs saying? Is your .htaccess actually read? Did you reload the Apache configuration? (can't remember if it is needed)

Siz "RewriteRule" bu url değişebilir ne olursa olsun Regex ile (sizin temiz url yani) istediğiniz URL şeklidir hemen sonra ... Yanlış düzen var. Bundan sonra, URL yolu var, artı Regex (vs, yani $ 1, $ 2) bulundu değerleri için belirteçleri

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

ErrorDocument 400 http://www.domain.com/400
ErrorDocument 403 http://www.domain.com/403
ErrorDocument 404 http://www.domain.com/404
ErrorDocument 500 http://www.domain.com/500

RewriteEngine on
RewriteBase /
#PAGES

RewriteRule ^/company/([A-Z]+)([0-9]+)/$ company.php?test=$1&%{QUERY_STRING} [NC,L]