我已经查看了有关此主题的多个线程,但是所有线程都在处理多个参数,而且我对 .htaccess 还是很陌生,我无法弄清楚如何修改答案以适应我的需要。
我正在使用 .htaccess 重写 URL,除了我尝试重写分页 URL 时,一切似乎都很顺利。
我的分页网址非常简单: blog.php?page=2 但由于某种原因我无法将网址重写为 /blog/page/2 。当我尝试将其路由到该 URL 时,我收到“内部服务器错误”。现在我将它重写为 /blog-page/2,这没关系,但我更喜欢 /blog/page/2。
我的 .htaccess 文件中有很多事情要做,所以我只会发布重写:
RewriteEngine On
# Full path
#RewriteBase /
# Rewrite all php files
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
# Rewrite the user profile pages
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^user/([a-zA-Z0-9_-]+)$ profile.php?user=$1
RewriteRule ^user/([a-zA-Z0-9_-]+)/$ profile.php?user=$1
# Rewrite the company profile pages
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^company/([a-zA-Z0-9_-]+)$ employer.php?user=$1
RewriteRule ^company/([a-zA-Z0-9_-]+)/$ employer.php?user=$1
# Rewrite the blog post pages
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^post/([a-zA-Z0-9_-]+)$ entry.php?id=$1
RewriteRule ^post/([a-zA-Z0-9_-]+)/$ entry.php?id=$1
# Rewrite the job listing pages
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^job/([a-zA-Z0-9_-]+)$ listing.php?id=$1
RewriteRule ^job/([a-zA-Z0-9_-]+)/$ listing.php?id=$1
# Rewrite blog pagination
RewriteRule ^blog/page/([0-9]+)$ blog.php?page=$1
RewriteRule ^blog/page/([0-9]+)/$ blog.php?page=$1
显然,我遇到的问题是博客分页的最终 RewriteRule。为什么我不能使它成为 /blog/page/2 但我可以使它成为 /blog-page/2?
我还尝试对博客类别和工作类别进行多页 .htaccess 重写,但我不断收到内部错误。我想要 1 次重写博客的工作类别和博客类别。这就是我所拥有的:
# Rewrite the category queries
RewriteRule ^/category/(.*)/?$ /$.php?cat=$1 [L,QSA]
是否可以使此分页重写适用于 2 个不同的页面?比如blogs.php和jobs.php?
RewriteCond %{REQUEST_FILENAME} !-f
另外,在我制定重写规则之前是否有必要继续放置?还是1次就够了?