我面临的问题,使网址搜索引擎优化友好和删除扩展从php文件。如果我使用其中的一个,要么删除扩展,要么使url搜索引擎优化友好,它工作得很好,但如果我使用这两个,只有上面的部分。htaccess为这两个工作。
我的.htaccess代码是

Options +FollowSymLinks
Options -Multiviews
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/.]+)/$ $1.php
RewriteRule ^([^/.]+)/([^/.]+)/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]

RewriteRule ^/([a-zA-Z0-9]+)/$ vendorlist.php?bcat=$1
RewriteRule ^([^/.]+)/([^/.]+)/?$ /vendor.php?bcat=$1&vendor=$2

它只在我使用上面写的扩展时才删除。如果使用搜索引擎优化友好的网址,它会给出一个错误404。但如果我这样改变立场
Options +FollowSymLinks
Options -Multiviews
RewriteEngine on

RewriteRule ^/([a-zA-Z0-9]+)/$ vendorlist.php?bcat=$1
RewriteRule ^([^/.]+)/([^/.]+)/?$ /vendor.php?bcat=$1&vendor=$2

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/.]+)/$ $1.php
RewriteRule ^([^/.]+)/([^/.]+)/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]

然后它只使网址搜索引擎友好。无扩建拆除工程。
请帮我摆脱这一切,提前谢谢…

最佳答案

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/]+)/$ $1.php

# Forces a trailing slash to be added
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]

来源:
User:Dave/Web Hack Notes (Non-Wiki)#Prettier URLs Through .htaccess
上面代码框中显示的示例只是一个建议。实际上值得阅读上面链接中的几个教程(指向我维护的wiki页面)。

关于php - 使url seo友好并从PHP中的文件中删除扩展所面临的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27224446/

10-09 01:53