2010-10-21 3 views
0

Я потерялся здесь. Я использую этот сценарий, чтобы дать пользователям возможность ввести свое имя пользователя lijke это: домен/имя пользователяMod rewrite user URL

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

Это прекрасно работает. Тем не менее, каждый пользователь имеет страницы, которые я должен связать с: видео, музыка, изображения и т.д. ...

Так что мне нужно что-то вроде:

domain/username/video 

В PHP коде должно быть что-то вроде:

user.php?user=test&page=video 

И еще один вопрос: какой предпочтительный способ связи в этой ситуации?

userpage.php?user=test&page=video 

или

/test/video 

И наконец: Можно ли отрицать возможность ввести URL: domain/userpage.php?user=test&page=video? Вместо этого просто всегда показывают: domain/test/video

Заранее спасибо

ответ

1

Я не уверен на 100%, что вы спрашиваете? Вам нужно изменить правило перезаписи в соответствии с URL site.com/moonwalker/videos? Вы можете попробовать это:

RewriteRule ^([^/]+)/(images|videos|music)/?$ userpage.php?user=$1&page=$2 [NC,L] 

Update Только быстрое примечание о структуре URL домена/члена/видео. Это может в конечном итоге вызвать проблемы в будущем. Например, что, если вы решите создать одну страницу, на которой будут показаны все видео участников? Вероятно, вы захотите, чтобы URL-адрес выглядел как site.com/members/videos. Это проблема, потому что правило перезаписи также будет соответствовать этому, но «участники» не являются именем пользователя.

Я бы, вероятно, структурировал URL-адреса моей страницы, такие как site.com/user/moonwalker/videos, чтобы он не противоречил правилам перезаписи. Вы изменили бы выше правила перезаписи к этому:

RewriteRule ^user/([^/]+)/(images|videos|music)/?$ userpage.php?user=$1&page=$2 [NC,L] 

Тогда позже вы можете добавить правило перезаписи, как:

RewriteRule ^members/(images|videos|music)/?$ allusers.php?page=$1 [NC,L] 

Показать все видео участников.

+0

Хм ... Я пытаюсь сделать следующее: домен /луноход/видео в фоновом режиме этот скрипт запущен: userpage.php? user = moonwalker & page = images Я пробовал свой скрипт, но у меня ошибка 404. – moonwalker

+0

Ошибка 404 показывает, какая страница не найдена? то есть «404 - userpage.php не найден» – mellowsoon

+0

Это полная ошибка: Запрашиваемый URL/moonwalker/video не найден на этом сервере. – moonwalker

1

Да, можно, посмотрев на request line:

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /userpage\.php[?\ ] 
RewriteRule ^userpage\.php$ - [F] 

Это необходимо, поскольку URL путь уже может быть переписан другим правилом и поэтому использование только RewriteRule соответствовало бы уже переписанным запросам.

+0

Я делаю что-то неправильно, потому что ошибка 404 продолжает проявляться. И спасибо за ответ. :) – moonwalker

+0

@moonwalker: Где вы хотите использовать это правило? – Gumbo

+0

@Gumbo: В этот момент я пытаюсь заставить все работать на моем локальном сервере. Итак: http: // localhost/ – moonwalker