2013-12-03 5 views
0

Я работаю над сайтом типа twitter/facebook для класса колледжа. Как-то они позволяют профессору преподавать этот класс без знаний PHP, CSS, HTML, JavaScript, jQuery или Ajax. Я пытаюсь переписать мои URL-адреса, чтобы они выглядели как твиттер. Я получил все страницы моих профилей пользователей, чтобы переписать на: www.site.com/username: www.site.com/profile.php?name=username. Однако я также хочу переписать мою страницу входа в систему, создать страницу учетной записи и т. Д. В настоящее время они: www.site.com/login.html, www.site.com/createAccount.html. Я хочу переписать без html. Вот мой файл .htaccess.htaccess rewriting if statements

RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME}\.html -f 
    RewriteRule ^([^\.]+)$ $1.html [NC,L] 

    RewriteRule ^([a-zA-Z0-9_-]+)$ profile.php?name=$1 [L] 

** Обновление

Я извиняюсь, я в конечном итоге переключения все мои файлы на .php. Но у меня все еще есть некоторые проблемы. Теперь я хочу только перенаправить определенные URL-адреса. Например: www.361orc.info/login необходимо внутренне перенаправить на www.361.orc.info/login.php. Я не могу понять, что не так со следующим кодом. Он перенаправляет, но он изменяет URL-адрес клиента. Я хочу, чтобы он просто перенаправлялся внутренне. Вот мой файл .htaccess:

RewriteEngine On 

#I want this code to change .com/login.php to .com/login but only internally 
#the URL in the client's browser shouldn't change 
RewriteCond %{REQUEST_FILENAME} !- 
RewriteRule ^login?$ login.php [L] 

#Change the profile pages of users from .com/profile.php?name=user to .com/user 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([\w-]+)/?$ /profile.php?name=$1 [L,QSA] 

ответ

0

вы могли бы сделать что-то вроде этого

# Rewrite User Profiles 
RewriteCond %{QUERY_STRING} ^name=([^&]+) [NC] 
RewriteRule ^profile.php$ /%1 [R=301,L] 

# Rewrite Login 
RewriteRule ^login.html$ /login [R=301,L] 

# Rewrite Create Account 
RewriteRule ^createAccount.html$ /createAccount [R=301,L] 
0

Вы довольно близко, только внешнее правило перенаправления, который будет перенаправлять .html файлы на те, без .html расширения:

RewriteEngine On 
RewriteBase/

# To externally redirect /dir/file.html to /dir/file 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.+?)\.html[\s?] [NC] 
RewriteRule^%1 [R=301,L,NE] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME}\.html -f 
RewriteRule ^([^\.]+?)/?$ $1.html [L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([\w-]+)$ profile.php?name=$1 [L,QSA]