我正在为自己编一个小博客,我找到了一个有用的.htaccess文件来删除文件扩展名:
AddType text/x-component .htc
RewriteEngine On
RewriteBase /
# remove .php; use THE_REQUEST to prevent infinite loops
RewriteCond %{THE_REQUEST} ^GET\ (.*)\.php\ HTTP
RewriteRule (.*)\.php$ $1 [R=301]
# remove index
RewriteRule (.*)/index$ $1/ [R=301]
# remove slash if not directory
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /$
RewriteRule (.*)/ $1 [R=301]
# add .php to access file, but don't redirect
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php 这是很好的工作,所有的页面显示.php较少。我知道我想对此进行扩展,所以当我单击某个特定博客帖子(例如/ blog /index.php?art=1)的链接时,它只显示在url中作为网站/blog/1。我想标记到.htaccess文件的末尾:
RewriteRule ^blog/(.*)$ blog/index.php?art=$0 [L]但这似乎不起作用。实际上,它会破坏博客页面,因此不会从DB中提取任何片段。
我的.htaccess文件位于根目录中,博客文件为/ root / blog /index.php。
如能提供任何帮助,我们将不胜感激。
发布于 2014-03-19 10:30:20
与大多数其他语言不同,.htaccess中的参数是而不是基于0的.要访问第一个参数,您应该使用$1,而不是$0。
下列措施应能发挥作用:
RewriteRule ^blog/(.*)$ blog/index.php?art=$1 [L]在其中添加一些测试也是值得的,例如,您可能只希望将数值传递给art,以便您可以使用以下方法对其进行改进:
RewriteRule ^blog/([0-9]+)$ blog/index.php?art=$1 [L]此外,添加QSA标志可能是值得的,因为这也将保留在原始URL中传递的任何查询字符串:
RewriteRule ^blog/([0-9]+)$ blog/index.php?art=$1 [L,QSA]https://stackoverflow.com/questions/22502571
复制相似问题