Простой mod_rewrite в существующем веб-сайте - PullRequest
0 голосов
/ 22 октября 2011

Я работаю над сайтом (для португалоязычных стран), который отображает фразы по одной за раз.

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

nfrases.com/ -> completely random phrase (don't need changing this!)
nfrases.com/index.php?id_frase=2222 -> phrase with ID (wanted this to be nfrases.com/2222)
nfrases.com/tag.php?tag_nome=amor -> random phrase with tag_nome (want: nfrases.com/amor)
nfrases.com/tag.php?tag_nome=amor&id_frase=2222 -> specific phrase with tag=amor (want: nfrases.com/amor/2222)

Я думаю, что это вопрос noob о mod_rewrite, но это именно то, что я есть! : D Я уже сделал несколько попыток, используя лишь немногие знания, но у меня либо 404 страницы, либо параметры не будут получены $ _GET ['tag_nome'] или $ _GET ['id_frase'].

Фактический htaccess у меня есть, но он не работает:

Options +FollowSymlinks -MultiViews

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.nfrases.com$
RewriteRule ^(.*)$ http://www.nfrases.com/$1 [R=301]

RewriteRule ^([0-9]+)(.*) index.php?id_frase=$1
RewriteRule ^(.*)/([0-9]+) tag.php?tag_nome=$1&id_frase=$2 [L,QSA]

Можете ли вы, ребята, помочь мне?

Еще раз спасибо за все! Я ценю вашу помощь.

Ответы [ 2 ]

1 голос
/ 22 октября 2011

Вы можете захотеть что-то вроде этого:

<IfModule mod_rewrite.c>
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

В этом случае nfrases.com/2222 будет переписан как index.php / 2222. Это легко разрешает базовую маршрутизацию в вашем файле index.php. Для более продвинутой маршрутизации может быть быстрее и проще использовать хороший фреймворк. Посмотрите на FuelPHP (http: www.fuelphp.com) или CodeIgniter (http://www.codeigniter.com).

1 голос
/ 22 октября 2011

Следующие правила перезаписи работают для меня на тестере RewriteRule :

#removes trailing slash
#/vida/222/ becomes /vida/222
#/222/ becomes /222
RewriteRule ^(.+)/$ /$1 [R=301]

#/222 silently rewrites to /index.php?id_frase=222
RewriteRule ^([0-9]+)$ index.php?id_frase=$1 [L]

#/vida silently rewrites to /index.php?tag_nome=vida
RewriteRule ^([a-zA-Z-]+)$ index.php?tag_nome=$1 [L]

#/vida/222 silently rewrites to /index.php?tag_nome-vida&id_frase=222
RewriteRule ^([^/]+)/([0-9]+)$ tag.php?tag_nome=$1&id_frase=$2 [L]
...