【发布时间】:2017-01-30 18:20:35
【问题描述】:
我正在尝试通过 URL 重写来做三件事:
- 删除 .php 文件扩展名
- 让我的帖子 URL 如下所示:mydomain.co.uk/resources/example-post 默认为 mydomain.co.uk/resources/post.php?s=example-post
- 让我的类别存档 URL 如下所示:mydomain.co.uk/resources/category/example-category 默认为 mydomain.co.uk/resources/archive.php?cat=example-category
这是我目前在 .htaccess 文件中的内容:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^\.]+)$ $1.php [L,QSA]
RewriteRule ^resources/([a-zA-Z0-9-/]+)$ /resources/post.php?s=$1 [L]
RewriteRule ^resources/category/([a-zA-Z0-9-/]+)/page/([0-9]+)/{0,1}$ /resources/archive.php?cat=$1&page=$2 [L]
RewriteRule ^resources/category/([a-zA-Z0-9-/]+)$ /resources/archive.php?cat=$1 [L]
它正在做前两件事。但不是第三个。
如果我删除
RewriteRule ^([^\.]+)$ $1.php [L,QSA]
然后它会做第三件事,而不是前两件事。
有什么想法吗?我如何让它同时完成所有三件事?
【问题讨论】:
-
你正在做这件事。您应该始终调用您的“最终”网址,然后将其重写为您的 php 脚本。 IE。 mydomain.co.uk/resources/category/example-category 转换为 mydomain.co.uk/resources/archive.php?cat=example-category 而不是相反。
-
对不起,我不明白你的意思。我不太擅长 URL 重写。
-
反过来做。调用页面 mydomain.co.uk/resources/category/example-category 而不是调用 mydomain.co.uk/resources/archive.php?cat=example-category 然后重写为 mydomain.co.uk/resources/archive.php ?cat=example-category.
-
尝试交换它们。但它没有用。我可能在我原来的问题中写错了。我已经编辑过了。
标签: apache .htaccess mod-rewrite url-rewriting