2012-07-04 4 views
1
RewriteEngine On 
RewriteBase/
# Use the following rule if you want to make the page like a directory 
RewriteRule ^(v)$ /$1/ 
# The following rule does the rewrite. 
RewriteRule ^(.+)/$ profile.php?name=$1 
# The following rewrite the other way round: 
RewriteCond %{REQUEST_URI} ^/profile.php 
RewriteCond %{THE_REQUEST} ^(GET|POST|HEAD|TRACE)\ /profile.php 
RewriteCond %{QUERY_STRING} name=([^&]+) 
RewriteRule ^profile.php$ %1? 

Я делаю этот код, указанный выше в моем файле .htaccess, это отлично работает в моей странице profile.php, потому что раньше, мой profile.php отображает этот вид URL:.htaccess несколько правил

http://mysite.com/profile.php?name=john 

, но когда я писал этот код это результат:

http://mysite.com/john/ 

Я также хотел бы применить этот код на category.php, так что я сделал просто скопировать код, указанный выше, и вся моя .htaccess файл выглядит следующим образом:

RewriteEngine On 
RewriteBase/

# Use the following rule if you want to make the page like a directory 
RewriteRule ^(v)$ /$1/ 

# The following rule does the rewrite. 
RewriteRule ^(.+)/$ profile.php?name=$1 
RewriteRule ^(.+)/$ category.php?cid=$1 

# The following rewrite the other way round: 
RewriteCond %{REQUEST_URI} ^/profile.php 
RewriteCond %{THE_REQUEST} ^(GET|POST|HEAD|TRACE)\ /profile.php 
RewriteCond %{QUERY_STRING} name=([^&]+) 
RewriteRule ^profile.php$ %1? 

RewriteCond %{REQUEST_URI} ^/category.php 
RewriteCond %{THE_REQUEST} ^(GET|POST|HEAD|TRACE)\ /category.php 
RewriteCond %{QUERY_STRING} cid=([^&]+) 
RewriteRule ^category.php$ %1? 

Но этот код дает мне странный результат, потому что, когда я посещаю http://mysite.com/john/ содержание, которое я вижу это содержание моего category.php.

Что мне здесь делать? Любая помощь была бы высоко оценена и вознаграждена!

Спасибо!

+0

Как система должна знать, что такое имя и что такое категория? Вы должны определить это в первую очередь. – jeroen

+0

@jeroen URL-адрес моей категории: http://mysite.com/category.php?id=1, в то время как мой профиль был таким: http://mysite.com/profile.php?id= 1 – PinoyStackOverflower

+0

Да, но ваши переписанные URL-адреса будут, например, 'mysite.com/john /' и 'mysite.com/movies /'. Что определяет категорию в новом URL и какое имя? – jeroen

ответ

1

У меня проблема с правилом ур. проблема, что я полагаю, что ваш веб-сервер не может отличить запрос, категории страница/страницы профиля всякий раз, когда приходит запрос как http://mysite.com/john/

поэтому я предлагаю сделать одно изменение в любом запросе профиля страницы или в запросе на странице категории.

просто добавить http://mysite.com/profile/john/

надеюсь, что это работает.

0

Похоже, я решил его с помощью этого один:

RewriteEngine On 
RewriteBase/

# Use the following rule if you want to make the page like a directory 
RewriteRule ^user/(!(profile.php))$ user/$1/ [R=301,L] 
RewriteRule ^category/(!(category.php))$ category/$1/ [R=301,L] 

# The following rule does the rewrite. 
RewriteRule ^user/(.+)/$ profile.php?id=$1 
RewriteRule ^category/(.+)/$ category.php?id=$1 

# The following rewrite the other way round: 
RewriteCond %{REQUEST_URI} ^/profile.php 
RewriteCond %{THE_REQUEST} ^(GET|POST|HEAD|TRACE)\ /profile.php 
RewriteCond %{QUERY_STRING} id=([^&]+) 
RewriteRule ^profile.php$ user/%1? 

RewriteCond %{REQUEST_URI} ^/category.php 
RewriteCond %{THE_REQUEST} ^(GET|POST|HEAD|TRACE)\ /category.php 
RewriteCond %{QUERY_STRING} id=([^&]+) 
RewriteRule ^category.php$ category/%1? 
+0

Но wen Я использовал этот код, и я печатаю по адресу http://mysite.com/user/john (без косой черты в последнем символе) он возвращает ошибку 404, но если есть, то он отлично возвращается. Как вы думаете, что здесь происходит? – PinoyStackOverflower

1

Чтобы ответить на вопрос, как он был изменен в комментариях:

Чтобы различать пользователей и категорий, если эти термины появляются в URL, вам нужна только одна строка за правило (непроверенный пример):

RewriteEngine On 
RewriteBase/

RewriteRule ^user/(\w+)/?$ /profile.php?name=$1 // using only a limited set of chars (letters and underscore) for the user name and an optional/at the end 

RewriteRule ^category/(\w+)/?$ /category.php?cid=$1 // using only a limited set of chars for the category (letters and underscore) and an optional/at the end 
+0

Спасибо за этот ответ, я также сделал свой собственный ответ ниже. :-) – PinoyStackOverflower

Смежные вопросы