.htaccess переписывает конфликтующие / красивые URL

У меня есть сайт, где URL выглядит так:
example.com/sample?m=1389&т = имя-заголовок

но я хочу, чтобы это выглядело так:
example.com/1389/name-title

Я думаю, что два из переписывают противоречивы. Первый из них — удалить .php с каждой страницы, а второй — сделать файл sample.php более дружественным к SEO. Вот весь мой код htaccess. Дайте мне знать, что я делаю не так. Я не хочу расширений файлов, и я хочу, чтобы мои страницы выглядели очень красиво. Спасибо.

Options +FollowSymlinks -MultiViews
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=301,L]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L]

# Remove www from any URLs that have them:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

Options All -Indexes

ErrorDocument 403 http://example.com/tapes.php
ErrorDocument 404 http://example.com/404

## EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 month"ExpiresByType image/jpeg "access 1 month"ExpiresByType image/gif "access 1 month"ExpiresByType image/png "access 1 month"ExpiresByType text/css "access 1 week"ExpiresByType application/pdf "access plus 1 month"ExpiresByType text/x-javascript "access plus 1 month"ExpiresByType application/javascript "access plus 1 month"ExpiresByType application/x-shockwave-flash "access plus 1 month"ExpiresByType image/x-icon "access 1 month"</IfModule>
## EXPIRES CACHING ##

# compress text, html, javascript, css, xml:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

# Or, compress certain file types by extension:
<files *.html>
SetOutputFilter DEFLATE
</files>

RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)\.html$ /sample?m=$1&t=$2 [L]

2

Решение

Вы можете использовать это в своем корне .htaccess:

Options +FollowSymlinks -MultiViews -Indexes
RewriteEngine on
RewriteBase /

# Remove www from any URLs that have them:
RewriteCond %{HTTP_HOST} ^www\.
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

# remove php
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=301,L]

# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} \s/+sample\?m=([^&]+)&t=([^\s&]+) [NC]
RewriteRule ^ /%1/%2? [R=301,L,NE]

# internal forward from pretty URL to actual one
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(\d+)/([^/]+)/?$ sample.php?m=$1&t=$2 [L,QSA,NC]

# add php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L]

ErrorDocument 403 http://example.com/tapes.php
ErrorDocument 404 http://example.com/404
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]