seo友好的博客网址

时间:2017-09-29 10:12:42

标签: php .htaccess mod-rewrite

正在构建一个博客系统,我在我的数据库中有一个名为url的表a,它保存帖子标题,日期我还有一个名为index.php的页面,显示来自数据库的所有数据,单击时会转到post.php。问题是网址不是SEO友好site/post?url=seo-friendly-url.html/2017-09-29,我有一个.htaccess文件,效果很好

`Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]
RewriteRule ^post/([a-zA-Z0-9-/]+)$ post.php?url=$1  
RewriteRule ^post/([a-zA-Z-0-9-]+)/ post.php?url=$1  
`

但拒绝重写我的博文,我的索引超链接看起来像这个<a href='post?url=".$row['url']."'>,试图将其重写为<a href='post/".$row['url']."'>但是没有用,已经做了研究但仍没有进展,请任何非常感谢帮助,就像现在这个问题一样。

1 个答案:

答案 0 :(得分:0)

在您网站的 VirtualHost 文件中添加AliasMatch(这将位于您的apache文件夹中)

这些是您需要在虚拟主机文件

中添加的行
AliasMatch ^post/([a-zA-Z0-9-/]+)$ post.php?url=$1  
AliasMatch ^post/([a-zA-Z-0-9-]+)/ post.php?url=$1

在基于linux的服务器上。虚拟主机将位于文件夹

/etc/apache2/sites-enabled/ 

在此文件夹中找到您的网站虚拟主机文件并添加这两行

虚拟主机将具有与此类似的代码

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined


    #Add these two line only donot disturb any other lines 

    AliasMatch ^post/([a-zA-Z0-9-/]+)$ post.php?url=$1  
    AliasMatch ^post/([a-zA-Z-0-9-]+)/ post.php?url=$1


</VirtualHost>

在.htaccess文件中删除这两行

RewriteRule ^post/([a-zA-Z0-9-/]+)$ post.php?url=$1  
RewriteRule ^post/([a-zA-Z-0-9-]+)/ post.php?url=$1

<强>加成

现在,如果您要将访问旧网址的用户(/post?url="old_url.html")重定向到新的友好网址(/post/old_url.html),请将其添加到你的.htaccess文件

RewriteRule ^post.php?url=([a-zA-Z0-9-/]+)$ post/$1
RewriteRule ^post.php?url=([a-zA-Z-0-9-]+)/ post/$1

如果您在虚拟主机文件中将所有行作为注释(所有行的#front),则将其添加到底部的虚拟主机

 <VirtualHost *:80>
        DocumentRoot "C:/xampp/htdocs"
        AliasMatch ^post/([a-zA-Z0-9-/]+)$ post.php?url=$1  
        AliasMatch ^post/([a-zA-Z-0-9-]+)/ post.php?url=$1


    </VirtualHost>

**

  

请记住在执行更改后重新启动Apache服务器

**