stackoverflow генерирует URL перезаписи,
поэтому мне нужно знать, как я могу сделать это, как stackoverflow?
http://stackoverflow.com/questions/9168364/how-to-rewrite-seo-friendly-urls-like-stackoverflow => 200 ok.(without trailing slash) http://stackoverflow.com/questions/9168364/how-to-rewrite-seo-friendly-urls-like-stackoverflow/ => 200 ok.(with trailing slash) http://stackoverflow.com/questions/9168364/ => 301 redirect. http://stackoverflow.com/questions/9168364 => 301 redirect.
Как я могу это сделать с помощью mod_rewrite?
У меня есть что-то вроде этого:
RewriteRule ^([0-9]+)[/]([^/]*) ./cat.php?id=$1&title=$2 [L,NC] mydomain.com/999 => 404 not found. mydomain.com/999/ => 200 ok. mydomain.com/999/test => 200 ok. mydomain.com/999/test/test2 => 200 ok. mydomain.com/999/test/test2/test3 => 200 ok. mydomain.com/999/test/test2/test3/test4 => 200 ok.
пожалуйста, дайте мне знать, как я могу изменить RewriteRule?
Вам нужно немного настроить ваше регулярное выражение, сделав необязательным косые черты. Используйте это правило:
RewriteRule ^([0-9]+)(?:/([^/]*))?/?$ ./cat.php?id=$1&title=$2 [L,NC]
.htaccess:
<IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine On # Get rid of index.php RewriteCond %{REQUEST_URI} /index\.php RewriteRule (.*) index.php?rewrite=2 [L,QSA] # Rewrite all directory-looking urls RewriteCond %{REQUEST_URI} /$ RewriteRule (.*) index.php?rewrite=1 [L,QSA] # Try to route missing files RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} public\/ [OR] RewriteCond %{REQUEST_FILENAME} \.(jpg|gif|png|ico|flv|htm|html|php|css|js)$ RewriteRule . - [L] # If the file doesn't exist, rewrite to index RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?rewrite=1 [L,QSA] </IfModule>
index.php:
$url = $_SERVER['REQUEST_URI']; $url = explode("/",substr($url,1));
Ваши ссылки будут читаемыми PHP следующим образом:
http://www.website.com/First/Second/Third
$url[0] >> 'First'
$url[1] >> 'Second'
$url[2] >> 'Third'