【发布时间】:2014-01-10 18:15:56
【问题描述】:
我在 WordPress 下有一个网站,我在其中创建了一个新页面 www.foo.com/section/
这个想法是创建一个永久链接,如 www.foo.com/param1/type/param2 并使用 .htaccess 使用重写规则:www.foo.com/section/?var1=param1&var2=param2&var3=type
RewriteEngine on
Options +FollowSymlinks
RewriteRule ^([a-z0-9_\s-.()&]+)/section1/([a-z0-9]+)$ /section/?var1=$2&var2=$1&var3=section1
RewriteRule ^([a-z0-9_\s-.()&]+)/section2/([a-z0-9]+)$ /section/?var1=$2&var2=$1&var3=section2
我让它在我的旧网站上运行,但在 WordPress 崩溃时。
#My rules -> copy&paste
RewriteRule ^([a-z0-9_\s-.()&]+)/section1/([a-z0-9]+)$ /section/?var1=$2&var2=$1&var3=section1
RewriteRule ^([a-z0-9_\s-.()&]+)/section2/([a-z0-9]+)$ /section/?var1=$2&var2=$1&var3=section2
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
我只有一个漂亮的 WordPress 404 页面
我在这里阅读了几个问题,但没有人帮助我。
感谢您的宝贵时间和问候,
R.
1 月 13 日
我创建了一个简单的测试来检查它。
新结构可以毫无问题地处理测试用例:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^lol/$ project/ [L] #Rule 1
RewriteRule ^foo/$ test/ [L] #Rule 2
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
- 规则 1,我在 WordPress 根目录中创建了一个子文件夹,名为“project”,其中 index.php 回显“Hi dad”,当键入 www.foo.com/lol/ 时,它会加载该脚本并呼应这个词。
- 规则 2,我创建了一个新的 WordPress 页面,www.foo.com/test/ 用一个简单的字符串来显示,但是当我写 www.foo.com/foo/ 时,它给了我错误 404。似乎重定向到 wp 页面没有按我的预期工作。
免责声明:当然是 www.foo.com/test/
现在我被困住了。
感谢您之前的回复和未来的帮助。
最好的问候,
R.
1 月 14 日
我有新消息:)
有效的新 .htaccess 是:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^([a-z0-9_\s-.()&]+)/alternator/([a-z0-9]+)$ ?page_id=554&supplier=$1&reference=$2&ref_type=A [L]
RewriteRule ^([a-z0-9_\s-.()&]+)/starter_motor/([a-z0-9]+)$ ?page_id=554&supplier=$1&reference=$2&ref_type=M [L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
而是重定向到我指向“?page_id=554”的.htaccess 中的“elecfinder/”,至少它不会给我错误 440
我正在研究交流发电机和起动电机的网站。
我的网址是http://www.elecfinder.com/hitachi/starter_motor/s114850,实际上是http://www.elecfinder.com/info/?supplier=hitachi&ref_num=M&reference=s114850,我在这里加载参考信息。
http://wp.elecfinder.com/elecfinder/?reference=s114850&supplier=hitachi&ref_type=M 是 wp 中的那个网络,所以我的想法是将http://wp.elecfinder.com/hitachi/starter_motor/s114850/ 重定向到这个。
现在我可以将http://wp.elecfinder.com/hitachi/starter_motor/s114850 重定向到http://wp.elecfinder.com/elecfinder/?page_id=554&supplier=hitachi&ref_num=M&reference=s114850,但有两个问题:
- 它将 url 更改为 http://wp.elecfinder.com/elecfinder/,而不是维护 wp.elecfinder.com/hitachi/starter_motor/s114850
- 缺少 GET 参数“reference”、“supplier”和“ref_type”
感谢您的宝贵时间。
最好的问候,
R.
【问题讨论】:
-
你的规则在
RewriteEngine On之前